gpt4 book ai didi

javascript - XRegExp 通过工作 unicode 检查返回 false\p?

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:08 27 4
gpt4 key购买 nike

我正在尝试让这个名称验证正则表达式正常工作,但遇到了问题。我已经确保我有 regexp 的 unicode 插件,但它似乎不起作用。此正则表达式可与 php pcre 正则表达式配合使用。

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

以上返回 false。我从未使用过 xregexp,也无法在网上找到任何似乎解释如何执行此操作的内容。任何帮助都会很棒,谢谢!

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

最佳答案

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

enter image description here

您还错过的是 \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>

关于javascript - XRegExp 通过工作 unicode 检查返回 false\p?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com