我试图让这个名称验证regex工作,但有问题。我已经确定我有regexp的unicode插件,但它似乎不起作用。此regex适用于php pcre regex。
XRegExp(“^a,.'-\pL+$").test('á');
以上返回为false。我从未使用过xregexp,也没有在网上找到任何能解释如何做到这一点的东西。任何帮助都会很好,谢谢!
这个特定的正则表达式应该接受所有unicode字符、破折号、逗号、句点和上下字母。
发布于 2017-03-30 06:51:29
一旦您检查了控制台中的模式是什么样子,这是非常容易的。它看起来像/^[a-zA-Zs,.'-pL]+$/,这意味着它根本不匹配Unicode字母,因为反斜杠已经消失(您需要在字符串文本中使用双反斜杠来定义一个在regex中转义特殊字符的文字反斜杠)。注意,与文字s匹配的不是空白,'-p会创建一个有效的范围,因此不会引发错误,但结果确实出乎意料。以下是该范围匹配的内容(是的,包括数字):

您还忽略了\pL已经包含了[a-zA-Z],所以模式中的这个部分是多余的。
// YOUR REGEX
console.log("^[a-zA-Z\s,.'\-\pL]+$"); // => /^[a-zA-Zs,.'-pL]+$/
// SHOULD BE DEFINE AS
console.log("^[\\s,.'\\pL-]+$"); // => /^[\s,.'\pL-]+$/
// TEST
console.log(XRegExp("^[\\s,.'\\pL-]+$").test('á')); // => true<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.min.js"></script>
https://stackoverflow.com/questions/43107452
复制相似问题