我正在尝试使用正则表达式验证字符串,该字符串必须具有1到6位数字,并且正好是4个特殊字符(我所说的特殊字符是$!^)(“'。英文/拉丁字符可以解释为字母数字,在这种情况下并不重要。
我在HTML输入的pattern属性中使用此正则表达式。
示例:12?74 @“ = 5应该是有效的字符串。
我已经尝试过:
([1-9]{1,6})([@"?']{4})
但是它不能按预期的方式工作,当字符混合时,我无法验证字符串,例如:1254 @@@@是okai,但12 @@'?44无效。
有人可以帮我解决这个问题吗?我是regex的新手,我需要一些帮助。谢谢!
答案 0 :(得分:1)
您可以使用
pattern="(?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$)(?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$).*"
请参见regex demo
请注意,HTML5正则表达式会自动用^(?:
和)$
包装,因此生成的模式看起来像
/^(?:(?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$)(?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$).*)$/
详细信息
^
-字符串的开头(?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$)
-1到6位数字,用字符串中允许的任意数量的非数字分隔(?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$)
-除ASCII字母或数字外,正好4个字符,用字符串中允许的任意数量的ASCII字母或数字分隔.*
-尽可能多的0+字符(换行符除外)$
-字符串的结尾。