我想用规则验证字符串:
字符串必须至少包含一个字母
字符串只能包含这些符号(但不是必须的):',-,(,)
如果字符串中存在符号,则它还必须包含一个字母(至少一个第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/