Javascript XRegExp使用有效的unicode检查返回false\p?

Javascript XRegExp使用有效的unicode检查返回false\p?,javascript,regex,unicode,xregexp,Javascript,Regex,Unicode,Xregexp,我正试图让这个名称验证正则表达式工作,但有问题。我已经确保我有用于regexp的unicode插件,但它似乎不起作用。此正则表达式与php pcre正则表达式一起使用 XRegExp(“^[a-zA-Z\s,.-\pL]+$”).test('á') 以上结果返回false。我从未使用过xregexp,也无法在网上找到任何解释如何使用xregexp的东西。任何帮助都会很好,谢谢 这个特殊的正则表达式应该接受所有的unicode字符、破折号、逗号、句点以及大写和小写字母。一旦您在控制台中检查了模式的

我正试图让这个名称验证正则表达式工作,但有问题。我已经确保我有用于regexp的unicode插件,但它似乎不起作用。此正则表达式与php pcre正则表达式一起使用

XRegExp(“^[a-zA-Z\s,.-\pL]+$”).test('á')

以上结果返回false。我从未使用过xregexp,也无法在网上找到任何解释如何使用xregexp的东西。任何帮助都会很好,谢谢


这个特殊的正则表达式应该接受所有的unicode字符、破折号、逗号、句点以及大写和小写字母。

一旦您在控制台中检查了模式的外观,这就很容易了。它看起来像是
/^[a-zA-Zs,.-pL]+$/
,这意味着它根本不匹配Unicode字母,因为反斜杠已经消失了(您需要在字符串文本中使用双反斜杠来定义一个在正则表达式中转义特殊字符的文本反斜杠)。请注意,您匹配的不是空白,而是文本
s
,并且
'-p
创建了一个有效范围,因此不会引发错误,但结果确实出乎意料。以下是该范围匹配的内容(是,包括数字):

您还遗漏了
\pL
已经包含
[a-zA-Z]
,因此模式中的部分是多余的

//您的正则表达式
console.log(“^[a-zA-Z\s,.\-\pL]+$”;//=>/^[a-zA-Zs,.-pL]+$/
//应定义为
console.log(“^[\\s,.\\pL-]+$”;//=>/^[\s,.'\pL-]+$/
//试验
console.log(XRegExp(“^[\\s,.\\pL-]+$”).test('á');//=>正确

您有什么版本的XRegExp<代码>\pL显然是从XRegExp 3开始支持的。实际上,我让它稍微工作了一下,只是因为某些原因,现在它允许使用数字。我所要做的就是将
\pL
更改为
\\pL
,但我完全不确定为什么现在允许使用数字。。。