[英]Javascript regex to match words separated by a spaced delimiter
我想驗證由某些定界符分隔的單詞的輸入。 在這種情況下,分隔符是“ |” 標志,前后用空格隔開
Hello | There | Yes -----> Match
Hello -----> Match
hello|There -----> No Match
到目前為止,我只剩下第一個單詞,但有以下幾點反對:
^[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>
如果您知道它將始終是一個空格,然后是管道字符,然后是一個空格,那么使用不帶正則表達式的split()
可能會更容易。
var myArray = myString.split(' | ');
如果您絕對必須使用正則表達式,因為(例如)您不知道哪種空白字符或將有多少個空白字符,您仍然可以使用split()
,只需將其傳遞給正則表達式即可:
var myRegExp = /\s+\|\s+/;
var myArray = myString.split(myRegExp);
如果要使用正則表達式,可以使用一個簡單的正則表達式,如下所示:
^\w+(?:\s\|\s\w+)*$ <--- this allows a unique word
or
^\w+(?:\s\|\s\w+)+$ <--- this allows two words at least
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.
}
如果該行具有上述格式,似乎您正在嘗試匹配整行。
^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)+$
要么
如果您還想匹配單個單詞,請使用此選項。
^[A-Za-z\d]+(?:\s\|\s[A-Za-z\d]+)*$
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.