XRegExp 返回假与工作 unicode 检查 \p?
XRegExp returning false with working unicode check \p?
我正在尝试使此名称验证正则表达式正常工作,但遇到了问题。我已经确定我有正则表达式的 unicode 插件,但它似乎不起作用。此正则表达式适用于 php pcre 正则表达式。
XRegExp("^[a-zA-Z\s,.'-\pL]+$").test('á');
以上returns错误。我从未使用过 xregexp,也无法在网上找到任何似乎可以解释如何执行此操作的内容。任何帮助都会很棒,谢谢!
这个特定的正则表达式应该接受所有 Unicode 字符、破折号、逗号、句号和大写字母和小写字母。
一旦您在控制台中检查了您的模式是什么样子,就很容易了。它看起来像 /^[a-zA-Zs,.'-pL]+$/
,这意味着它根本不匹配 Unicode 字母,因为反斜杠消失了(您需要在字符串文字中使用双反斜杠来定义文字反斜杠,以转义正则表达式中的特殊字符)。请注意,您匹配的不是空格,而是文字 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>
我正在尝试使此名称验证正则表达式正常工作,但遇到了问题。我已经确定我有正则表达式的 unicode 插件,但它似乎不起作用。此正则表达式适用于 php pcre 正则表达式。
XRegExp("^[a-zA-Z\s,.'-\pL]+$").test('á');
以上returns错误。我从未使用过 xregexp,也无法在网上找到任何似乎可以解释如何执行此操作的内容。任何帮助都会很棒,谢谢!
这个特定的正则表达式应该接受所有 Unicode 字符、破折号、逗号、句号和大写字母和小写字母。
一旦您在控制台中检查了您的模式是什么样子,就很容易了。它看起来像 /^[a-zA-Zs,.'-pL]+$/
,这意味着它根本不匹配 Unicode 字母,因为反斜杠消失了(您需要在字符串文字中使用双反斜杠来定义文字反斜杠,以转义正则表达式中的特殊字符)。请注意,您匹配的不是空格,而是文字 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>