2015-04-21 160 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

相關問題