Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 正则表达式:检查字符串是否有1到6位数字,以及恰好4个特殊字符_Html_Regex - Fatal编程技术网

Html 正则表达式:检查字符串是否有1到6位数字,以及恰好4个特殊字符

Html 正则表达式:检查字符串是否有1到6位数字,以及恰好4个特殊字符,html,regex,Html,Regex,我正在尝试使用正则表达式验证字符串,该字符串必须有1到6个数字,并且正好有4个特殊字符(我所说的特殊字符是指类似$!^的字符)(“”。非英语/拉丁字符可以解释为字母数字,在这种情况下并不重要 我在HTML输入的模式属性中使用这个正则表达式 示例:12?74@“=5应为有效字符串 我已经试过: ([1-9]{1,6})([@"?']{4}) 但是它不能像预期的那样工作,当字符混合时,我无法验证字符串,例如:1254@@@is okai,但12@@@44无效 有人能帮我解决这个问题吗?我

我正在尝试使用正则表达式验证字符串,该字符串必须有1到6个数字,并且正好有4个特殊字符(我所说的特殊字符是指类似$!^的字符)(“”。非英语/拉丁字符可以解释为字母数字,在这种情况下并不重要

我在HTML输入的模式属性中使用这个正则表达式

示例:12?74@“=5应为有效字符串

我已经试过:

([1-9]{1,6})([@"?']{4})
但是它不能像预期的那样工作,当字符混合时,我无法验证字符串,例如:1254@@@is okai,但12@@@44无效

有人能帮我解决这个问题吗?我是新加入regex的,我需要一些帮助。谢谢!

您可以使用

pattern="(?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$)(?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$).*"

请注意,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+字符(断线字符除外)
  • $
    -字符串结束

  • 你认为什么“特殊”??正则表达式在哪里使用?任何特殊字符。我正在测试第一个答案,因为它似乎起作用了!您可以分两个阶段进行测试——首先过滤掉数字,检查剩下的是四个特殊字符;然后过滤掉除数字外的所有内容,并检查是否还有一到六个数字。好的,这是JavaScript ECMAScript和这个版本取决于浏览器。抱歉,匹配任何Unicode字母都不容易。最好的办法是只考虑ASCII字母和数字作为一个有效的字母数字字符,这样的模式很高兴你终于意识到了需求。我不介意我的答案的下注,虽然我真的不知道W。为什么我正确的,有效的,解释性的答案被否决了。如果你需要更多的帮助,请通过评论告诉我。