我想寫一個正則表達式,以檢查是否用戶插入由至少一個空的空間分開的至少兩個詞:的regexp用於檢查全名
實施例:
var regexp = new RegExp(/^[a-z,',-]+(\s)[a-z,',-]+$/i);
regexp.test("D'avid Camp-Bel"); // true
regexp.test("John ---"); // true // but it should be false!
我想寫一個正則表達式,以檢查是否用戶插入由至少一個空的空間分開的至少兩個詞:的regexp用於檢查全名
實施例:
var regexp = new RegExp(/^[a-z,',-]+(\s)[a-z,',-]+$/i);
regexp.test("D'avid Camp-Bel"); // true
regexp.test("John ---"); // true // but it should be false!
請問^[a-z]([-']?[a-z]+)*([a-z]([-']?[a-z]+)*)+$
是否適合您?
[a-z]
確保名稱始終以字母開頭,然後[-']?[a-z]+
允許分隔字符,只要其後至少有另一個字母。 *
允許任何數量的這些部分。
下半年,([a-z]([-']?[a-z]+)*)
匹配一個空格,後跟另一個相同模式的名稱。 +
確保至少有一個附加名稱存在,但允許更多。 ({1,2}
可以,如果你想只允許兩個或三個部分名稱中使用
是的,非常完美,謝謝 – js999 2012-07-17 14:35:32
兩三指出:
在JavaScript中它通常最好使用文字,而不是命名的構造函數(所以/pattern/
而不是new RegExp()
(當然,有些時候,你需要的。構造函數路由)。
如果你使用的構造,在正則表達式的情況下,你不需要提出了界定斜槓
您當前的模式只有第一個字
{1,}
可以與寫相匹配修改+
嘗試
/^([a-z']+(-|)?)+$/i
注意姓氏允許雙桶姓氏。
這個答案還支持Unicode字符
^[\p{L}]([-']?[\p{L}]+)*([\p{L}]([-']?[\p{L}]+)*)+$
JS不支持'\ p {L}'... – Jerry 2017-11-13 11:19:27
而[你嘗試]什麼(HTTP:// whathaveyoutried .com) – 2012-07-17 12:34:31
答案提示:'var regexp =/^ [az] + \ s [az] + $/i;'(一個答案必須解釋這種模式) – 2012-07-17 12:35:45
'\ w' - 是命名變量的任何符號,像[a-zA-Z0-9_] – gaussblurinc 2012-07-17 12:36:57