Javascript 名称的正则表达式模式在adobe cq5中不起作用
我需要一个regex模式的名称字段中,我想允许字符a-z,a-z和'-和空白。我目前正在使用此代码,但它给出了一个错误Javascript 名称的正则表达式模式在adobe cq5中不起作用,javascript,regex,validation,aem,forms,Javascript,Regex,Validation,Aem,Forms,我需要一个regex模式的名称字段中,我想允许字符a-z,a-z和'-和空白。我目前正在使用此代码,但它给出了一个错误 final String regexpattern = "/[a-zA-Z\s-']*/"; 您必须在\s之前添加另一个\,并为匹配开始和结束添加^和$ final String regexpattern = "/^[a-zA-Z\\s'-]*$/"; 您的正则表达式(当它不再格式不正确时-请参阅下面的如何修复)将始终匹配,因为您不使用锚(^-字符串的开头和$-字符串的结尾
final String regexpattern = "/[a-zA-Z\s-']*/";
您必须在
\s
之前添加另一个\
,并为匹配开始和结束添加^
和$
final String regexpattern = "/^[a-zA-Z\\s'-]*$/";
您的正则表达式(当它不再格式不正确时-请参阅下面的如何修复)将始终匹配,因为您不使用锚(^
-字符串的开头和$
-字符串的结尾)并使用*
量词(尽可能多地匹配与前面子模式匹配的一个或多个符号)
但是,仅仅添加^
和$
不会修复该模式,因为您在C字符串(即字符串文本“…”中)中使用了1个反斜杠和\s
。反斜杠被视为转义符号,不被考虑,因为“\s”
是无效的转义序列。在正则表达式中的字符类内(即在[…]
中),连字符创建一个范围。您的s-'
创建了从s
(十二月代码115)到'
(十二月代码39)的范围。由于在字符类内的某个范围内,代码必须从最低到最高,因此会引发错误
你可以用
final String regexpattern = "/^[a-zA-Z\\s-']*$/";
这可能是因为速记类\s
后面的连字符不创建范围,被视为文字。作为最佳实践,您可以像xdazz一样将其移动到角色类的末尾
关于你在评论中的补充问题:
我必须允许所有字符,不包括^%*()#代码>
只需使用一个求反字符类:一对方括号,内有一个起始^
:
final String regexpattern = "/^[^<>%*()#!^?]*$/";
1 2 3
final String regexpatern=“/^[^%*()#!^?]*$/”;
1 2 3
这里,第一个^
是字符串锚定的开始,第二个插入符号是字符类中字符的否定。第三个插入符号是一个文字符号^
它是一个有效的正则表达式。您遇到了什么错误?您好xdazz,谢谢,它工作正常。您能帮我找一些正则表达式模式吗?我也不知道这些,比如如果我必须允许所有字符,不包括^%*()#!?