我正在开发一个JavaScript应用程序,需要识别“任何可见的Unicode字母字符、数字(0-9)、空格、下划线和句点”的集合。建议使用的正则表达式模式是^[0-9\\p{L} _\\.]+$
,但在JavaScript中似乎不起作用。让我困扰的部分是“任何可见的Unicode字母字符”,因为这包括非英语字符。是否有一些JavaScript正则表达式模式可以识别Unicode字母字符集?
我正在开发一个JavaScript应用程序,需要识别“任何可见的Unicode字母字符、数字(0-9)、空格、下划线和句点”的集合。建议使用的正则表达式模式是^[0-9\\p{L} _\\.]+$
,但在JavaScript中似乎不起作用。让我困扰的部分是“任何可见的Unicode字母字符”,因为这包括非英语字符。是否有一些JavaScript正则表达式模式可以识别Unicode字母字符集?
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} _\\.]+
- 一个或多个字符:
0-9
- ASCII数字\\p{L}
- 字母
- 空格_
- 下划线 .
- 点(在字符类中,.
匹配实际的点,无需转义)$
- 字符串的结尾。如果您还想包含以下条件:
您可以将模式扩展到以下内容:
^(?!.*(riot)).{3,16}$
var pattern = new XRegExp("^(?!.*\\bRiot\\b)[0-9\\p{L} _\\.]{3,16}$");
^^^^^^^^^^^^^^^^ ^^^^^^
将 +
(1次或多次出现)替换为 {3,16}
限定符(3到16次出现),并且 (?!.*\\bRiot\\b)
负向先行断言将在字符串中(或行,因为 .
匹配任何字符但不包括换行符)任何位置存在单词(由于 \\b
单词边界)Riot
时,匹配将失败。