使用XRegExp
庫來解析當前的正則表達式:
var pattern = new XRegExp("^[0-9\\p{L} _.]+$");
var s = "123 Московская Street.";
if (XRegExp.test(s, pattern)) {
console.log("Valid");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>
注意^[0-9\\p{L} _\\.]+$
比賽
^
- 字符串的開始
[0-9\\p{L} _\\.]+
- 一個或多個字符THA是:
0-9
- ASCII數字
\\p{L}
- 字母
- 空間
_
- 下劃線
.
- 一個點(字符類內, .
與字面點匹配,無需轉義)
$
- 字符串結尾。
如果你想還包括以下幾種情況:
- 名稱必須是至少3個字符長,不超過16個字符長。
- 沒有玩家的名字可以在其中包含「暴亂」一詞。
您可能的圖案延伸到以下:
var pattern = new XRegExp("^(?!.*\\bRiot\\b)[0-9\\p{L} _\\.]{3,16}$");
^^^^^^^^^^^^^^^^ ^^^^^^
其中+
(1個或多個)替換{3,16}
限制性量詞(3〜16次)和(?!.*\\bRiot\\b)
負先行將失敗比賽如果有整個單詞(由於\\b
字邊界)Riot
位於字符串(或行,因爲.
匹配任何字符但是換行符字符)內的任何位置。
您的模式在XRegExp中有效。 –
什麼是「任何可見的Unicode字母字符」?所有的Unicode字母?請參閱[本演示](https://jsfiddle.net/jqyu47qo/)。 –
感謝大家,這個演示看起來像XRegExp會做的伎倆。如果你很好奇,我正在嘗試驗證英雄聯盟網站的召喚師名字。這是他們定義爲「任何可見的Unicode字母字符,數字(0-9),空格,下劃線和句點的全套字符」https://support.riotgames.com/hc/en-us/articles/ 201752814 - 召喚師 - 名稱 - FAQ#h1q5 – Andrew