2015-04-21 94 views
0

我想验证由某个分隔符分隔的单词的输入。 本例中的分隔符是“|”签字,前后Javascript正则表达式匹配用空格分隔符分隔的单词

Hello | There | Yes -----> Match 
Hello     -----> Match 
hello|There   -----> No Match 

到目前为止,我已经得到了只有第一个字有以下rejex用空格分开:

^[a-zA-Z]+ 

我怎么分隔单词或数字与空间一个分隔符? PS仍在完成教程。任何帮助,将不胜感激

要进一步澄清,我正在寻找一个dojo dijit小部件的正则表达式以正确验证输入。

dojo.declare("some.class", dijit.form.ValidationTextBox, { 
     regExp: "" 

    }); 

    dojo.addOnLoad(function() { 

    var formString = new some.class({ 
     }, "StringName"); 
    } 

    <form id="myForm" name="myForm"> 
     String: <input id="StringName" name="name" type="text"> 
    </form> 
+0

这将是简单的方法来做到这一点毫无疑问,但我正在寻找正则表达式版本 – Avi

+0

''你好|有|是“.split('|').join()。split('' ).indexOf('|')=== -1' AND'“Hello | There | Yes”.split('|').join()。split('')。indexOf('|')!== -1' –

+0

@Avi你想检查整行吗?你的预期产出是多少? –

回答

1

如果你想使用正则表达式,你可以使用一个简单的正则表达式是这样的:

^\w+(?:\s\|\s\w+)*$ <--- this allows a unique word 
or 
^\w+(?:\s\|\s\w+)+$ <--- this allows two words at least 

Working demo

Regular expression visualization

Javascript代码:

var re = /^\w+(?:\s\|\s\w+)*$/gm; 
var str = 'Hello | There | Yes\nhello|There\n456 | 654 | 645 | 465'; 
var m; 

while ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) { 
     re.lastIndex++; 
    } 
    // View your result using the m-variable. 
    // eg m[0] etc. 
} 
0

好像你试图匹配整行,如果行是上述格式。

^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$ 

OR

这个,如果你也想一个单词使用。

^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)*$ 

DEMO

var s = "Hello | There | Yes"; 
 
var s1 = "hello|There"; 
 
var s2 = "456 | 654 | 645 | 465"; 
 
alert(/^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$/.test(s)) 
 
alert(/^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$/.test(s1)) 
 
alert(/^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$/.test(s2))

2

如果你知道它永远是一个空格,然后通过管道字符后面跟着一个空间,它可能是更容易使用split()没有一个正则表达式。

var myArray = myString.split(' | '); 

如果你绝对必须使用正规,因为(举例来说)你不知道什么样的空白字符或多少会有,你仍然可以使用split()只是通过它的正则表达式:

var myRegExp = /\s+\|\s+/; 
var myArray = myString.split(myRegExp); 
+0

prolly更好'/ \ s * \ | \ s * /' –

+0

这将如何检查整行? –

+0

@CrayonViolent OP想要管道周围的空间,但不清楚是否允许多个空间或换行符等。可能会后跟'/ |去/'。 – adamdc78

相关问题