Angularjs 正在查找防止除';以外的特殊字符的正则表达式的帮助;,在字符串中使用空格和-,但在开头不允许使用空格和-
我一直在互联网上搜寻这个正则表达式问题的答案,我已经非常接近得到它,但我想我错过了一个或两个以上的组,以防止字符串开头和结尾的特殊字符 它用于angularJS,完整规范是一个字母字符串,长度不能超过20个字符,只允许-、'和空格作为特殊字符,但-'和'不能连续使用,不能在字符串的开头或结尾使用 以下是我目前拥有的正则表达式:Angularjs 正在查找防止除';以外的特殊字符的正则表达式的帮助;,在字符串中使用空格和-,但在开头不允许使用空格和-,angularjs,regex,string,validation,Angularjs,Regex,String,Validation,我一直在互联网上搜寻这个正则表达式问题的答案,我已经非常接近得到它,但我想我错过了一个或两个以上的组,以防止字符串开头和结尾的特殊字符 它用于angularJS,完整规范是一个字母字符串,长度不能超过20个字符,只允许-、'和空格作为特殊字符,但-'和'不能连续使用,不能在字符串的开头或结尾使用 以下是我目前拥有的正则表达式: /(?!.*?[ '-]{2})[A-Za-z '-]{1,20}$/ 它防止任何非“-”或空格的特殊字符,只允许连续使用“-”中的1个,但仍允许在字符串的开头和结尾使
/(?!.*?[ '-]{2})[A-Za-z '-]{1,20}$/
它防止任何非“-”或空格的特殊字符,只允许连续使用“-”中的1个,但仍允许在字符串的开头和结尾使用“-”和“。将显示正在工作的正则表达式
- -无名氏
- 无名氏-
- “约翰·多伊
- 无名氏
上述4个需要标记为无效匹配,但我无法确定如何与正则表达式中当前的所有其他表达式一起执行此操作。您可以重新写入模式,使两个字母之间仅匹配1个非单词字符,并在开始时以正向前瞻的方式限制正则表达式的长度:
/^(?=.{1,20}$)[A-Za-z]+(?:[ '-][A-Za-z]+)?$/
见
注意:如果使用maxlength
/minlength
,甚至可以取消长度限制
详细信息
-字符串的开头^
-整个字符串的长度必须介于1到20个字符之间(?=.{1,20}$)
-1+ASCII字母[A-Za-z]+
-1可选序列:(?:['-][A-Za-z]+)?
-1空格/撇号/连字符['-]
-1个或多个ASCII字母[A-Za-z]+
-字符串结束$
(?=.{1,20}$)
是一个匹配字符,其中
匹配除换行字符以外的任何字符,{1,20}
是一个匹配1到20个连续出现的量化子模式,$
匹配字符串结束位置。其余的解释,更多关于。