我正在处理一个JavaScript应用程序,该应用程序要求我识别一组"任何可见的Unicode字母字符,数字(0-9),空格,下划线和句点"。建议的正则表达式模式为^[0-9\\p{L} _\\.]+$
,但这似乎不适用于JavaScript。给我带来麻烦的部分是"任何可见的Unicode字母字符"因为那包括非英文字符。是否有一些JavaScript正则表达式模式可以识别Unicode字母字符集?
答案 0 :(得分:2)
使用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>
&#13;
请注意^[0-9\\p{L} _\\.]+$
匹配
^
- 字符串开头[0-9\\p{L} _\\.]+
- 一个或多个字符:
0-9
- ASCII数字\\p{L}
- 字母
- space _
- 下划线.
- 一个点(在一个字符类中,.
匹配一个文字点,无需转义)$
- 字符串结束。如果您还想包括以下条件:
您可以将模式扩展为以下内容:
var pattern = new XRegExp("^(?!.*\\bRiot\\b)[0-9\\p{L} _\\.]{3,16}$");
^^^^^^^^^^^^^^^^ ^^^^^^
其中+
(1次或更多次出现)被{3,16}
限制量词(3到16次出现)替换而(?!.*\\bRiot\\b)
否定前瞻将使匹配失败,如果有一个完整的单词(由于\\b
字边界而导致Riot
位于字符串内部的任何位置(或行,因为.
匹配任何字符但是换行符号。)