xregexp具有不同的结果

xregexp具有不同的结果

我想用规则验证字符串:
字符串必须至少包含一个字母
字符串只能包含这些符号(但不是必须的):',-,(,)
如果字符串中存在符号,则它还必须包含一个字母(至少一个第1个项目符号)
只允许使用符号
到目前为止,我已经提出了以下正则表达式:

    static personName = XRegExp.cache("^[\\s\\p{L}\\'\\-\\(\\)]+(?=\\S*\\p{L})\\S+$");

它不能正常工作。只有"^(?=\\S*\\p{L})\\S+$"这对字母有帮助,我很难理解如何在其中添加符号,以便所有规则都能通过,我做错了什么?

最佳答案

如果您允许的字符仅限于您列举的字符,则可以使用

var regex = XRegExp("^[\\s'()-]*\\p{L}[\\s\\p{L}'()-]*$");

如果您希望允许任何字符,但只允许使用符号的子集,则使用“至少1个字母”限制
var regex = XRegExp("^[\\p{N}\\s'()-]*\\p{L}[\\p{L}\\p{N}\\s'()-]*$");

查看js演示:
var regex = XRegExp("^[\\s'()-]*\\p{L}[\\s\\p{L}'()-]*$");
console.log( regex.test("Sóme (unknown-string) doesn't like it") );

var regex = XRegExp("^[\\p{N}\\s'()-]*\\p{L}[\\p{L}\\p{N}\\s'()-]*$");
console.log( regex.test("Sóme unknown-string (123)") );

<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>

详情
^-字符串开始
[\\s'()-]*-0或更多空白、'()-字符
[\\p{N}\\s'()-]*-0个或多个数字、空白和允许的符号
\\p{L}-一封信
[\\s\\p{L}'()-]*-0或更多空白、字母、'()-字符
[\\p{L}\\p{N}\\s'()-]*-0个或多个字母、数字、空白和允许的符号
$-字符串结束。

关于regex - xregexp具有不同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55177849/

10-16 19:34