首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XRegExp使用unicode检查返回false \p?

XRegExp使用unicode检查返回false \p?
EN

Stack Overflow用户
提问于 2017-03-30 02:28:57
回答 1查看 284关注 0票数 1

我试图让这个名称验证regex工作,但有问题。我已经确定我有regexp的unicode插件,但它似乎不起作用。此regex适用于php pcre regex。

XRegExp(“^a,.'-\pL+$").test('á');

以上返回为false。我从未使用过xregexp,也没有在网上找到任何能解释如何做到这一点的东西。任何帮助都会很好,谢谢!

这个特定的正则表达式应该接受所有unicode字符、破折号、逗号、句点和上下字母。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 06:51:29

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

您还忽略了\pL已经包含了[a-zA-Z],所以模式中的这个部分是多余的。

代码语言:javascript
复制
// 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
代码语言:javascript
复制
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.min.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43107452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档