2017-04-07 77 views
0

我对javascript世界很陌生,对于正则表达式并不知情;我希望你能帮助我与一个:Javascript正则表达式从文本中获取元素

我需要一个函数,给了我一个文本块的元素,用户可以通过他们网站上的<input/输入,这样我就可以输出到另一个<input/

广义输入:

txt1/txt2_txt3#[email protected] 

实时输入的例子( “personalcode”):

user/855042,5_512125#2431072,[email protected] optionaladdition 

我得到了什么迄今已是HTML的东西,这(-yep那不是太多):

var base= document.getElementsByName("personalcode")[0].value; 

我需要得到的是:

var one = txt1; //always letters 
var two = txt2; //always a decimal number 
var three = txt3; //always a decimal number 
var four = txt4; //always a decimal number 
var five = txt5; //always a decimal number 
var six = txt6; //can be letters and decimal numbers 

在文本元素中不会存在特殊字符,例如!“$%& /()=?+ *#。 ö,ü,ä是可能的。

例子:

var one = user; 
var two = 855042,5; 
var three = 512125; 
var four = 2431072,25; 
var five = 729106; 
var six = coursname optionaladdition; 

最后,我想它输出这样的:

document.getElementsByName("output-user")[0].value= one; 
. 
. 
. 

我希望你明白我的意思。

回答

0

我希望我能理解你想要达到的目标。

我为你做了一个小提琴如何获得你的数据。 https://jsfiddle.net/zasg4zgx/6/

这里是代码:

<form> 
    Login : 
    <input id="logthis" type="text" name="fnName" value="user/855042,5_512125#2431072,[email protected] Löcher in Socken flicken"> 
    <input type="button" value="Login" onClick="javascript:SeperateLoginString(logthis.value)"> 
</form> 

与ID我可以登录字段的值传递给函数。

function SeperateLoginString(logData) { 
var seperateString = []; 
var temp = new String(logData); 

    temp = temp.replace(/@/g, ' ').replace(/_/g, ' ').replace(/#/g, ' ').replace(/\//g, ' '); 
    seperateString = temp.split(" "); 

var user = seperateString[0]; 
var value1 = seperateString[1]; 
var value2 = seperateString[2]; 
var value3 = seperateString[3]; 
var value4 = seperateString[4]; 
var value5 = seperateString[5]; 

有了这个循环中,您可以添加“可选加法”到你的价值。 我管理它,所以它可以有多个值

for (var i = 6; i < seperateString.length; i++) { 
    value5 += " " + seperateString[i]; 
    } 
alert(value5); 
} 

问候,杨千嬅

+0

真棒!这一个完美的作品!补袜子 孔...肯定是一个有趣的课程) –

+0

当时的第一件事,我能想到;-)我很高兴我能帮助 – MiBrock

0

既然你要求六个不同的变量,我建议你使用六个不同的输入标签。这对用户尤其是对于开发者来说更​​容易。像这样解析字符串会造成麻烦。

但是,您可以使用正则表达式从字符串中获取值。例如,如果你(只能是字母)希望你的第一个变量,你可以不喜欢this

var 1 = text.match(/([A-z])+\//g).slice(0, - 1); 

它基本上匹配一组字符与字母开头并以正斜杠结束。切片方法删除字符串中的最后一个字符(正斜杠)。

第二VAR可以选择喜欢this

var 2 = text.match(/([0-9])+\#/g).slice(0, - 1); 

不过,我建议你只使用多个输入。它更干净,不易出错。祝你好运!

2
var str = "user/855042,5_512125#2431072,[email protected] optionaladdition"; 
var arr = str.split(/\/([\d,]+)_([\d,]+)#([\d,]+)_([\d,]+)@/); 
# => ["user", "855042,5", "512125", "2431072,25", "729106", "coursname optionaladdition"]