簡體   English   中英

Javascript正則表達式以匹配由分隔符分隔的單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM