Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 用于在字符串中阻止3个以上数字的正则表达式_Regex - Fatal编程技术网

Regex 用于在字符串中阻止3个以上数字的正则表达式

Regex 用于在字符串中阻止3个以上数字的正则表达式,regex,Regex,我试图阻止任何包含3个以上数字的字符串,并阻止使用特殊字符。我把特殊角色部分记下来了。我只是错过了数字部分 例如: "Hello 1234" - Not Allowed "Hello 123" - Allowed 我尝试了以下方法: /^[!?,A-Za-z0-9]+$/ /((^[!?,A-Za-z]\d)([0-9]{3}+$)/ /^((\d){2}[a-zA-Z0-9,.!?])*$/ 最后一个是我得到的最接近的,因为它可以防止任何特殊字符和任

我试图阻止任何包含3个以上数字的字符串,并阻止使用特殊字符。我把特殊角色部分记下来了。我只是错过了数字部分

例如:

"Hello 1234" - Not Allowed
"Hello 123" - Allowed
我尝试了以下方法:

/^[!?,A-Za-z0-9]+$/
/((^[!?,A-Za-z]\d)([0-9]{3}+$)/
/^((\d){2}[a-zA-Z0-9,.!?])*$/
最后一个是我得到的最接近的,因为它可以防止任何特殊字符和任何数字被输入

我已经看过以前的帖子了,但是我的文章不够

编辑以澄清

本质上,我试图找到一种方法来阻止客户在表单上输入PII。不允许在一个字符串中包含超过3个数字的提交

Hello1234-不允许 12345-不允许 1111-不允许


当用户输入字符串时,注释部分中没有任何位置的数字总数应超过3个。

关于您尝试的模式

  • ^[!?,A-Za-z0-9]+$
    模式匹配所列任何一项的1+倍,包括1个或多个数字
  • ((^[!?,A-Za-z]\d)([0-9]{3}+$)
    如果支持
    {3}+
    ,则模式匹配字符类中的单个字符,1位后跟3位
  • ^((\d){2}[a-zA-Z0-9,.!?])*$
    模式重复0多次,匹配字符类中列出的2位数字和1位数字

如果支持在一行中声明非4位数字,则可以使用负前瞻

^(?!.*\d{4})[a-zA-Z0-9,.!? ]+$

如果总共不能有4位数字,但出现0-3次:

^[a-zA-Z,.!?]*(?:\d[a-zA-Z,.!?]*){0,3}$
解释

  • ^
    字符串的开头
  • [a-zA-Z,.!?]*
    匹配列出的任何项的0+倍(无数字)
  • (?:\d[a-zA-Z,.!?]*){0,3}
    重复0-3次,匹配单个数字,后跟可选列出的字符(同样没有数字)
  • $
    字符串结尾

如果您不想匹配空字符串,并且支持前瞻:

^(?!$)[a-zA-Z,.!? ]*(?:\d[a-zA-Z,.!? ]*){0,3}$

有关您尝试的模式,请参见另一个

  • ^[!?,A-Za-z0-9]+$
    模式匹配所列任何一项的1+倍,包括1个或多个数字
  • ((^[!?,A-Za-z]\d)([0-9]{3}+$)
    如果支持
    {3}+
    ,则模式匹配字符类中的单个字符,1位后跟3位
  • ^((\d){2}[a-zA-Z0-9,.!?])*$
    模式重复0多次,匹配字符类中列出的2位数字和1位数字

如果支持在一行中声明非4位数字,则可以使用负前瞻

^(?!.*\d{4})[a-zA-Z0-9,.!? ]+$

如果总共不能有4位数字,但出现0-3次:

^[a-zA-Z,.!?]*(?:\d[a-zA-Z,.!?]*){0,3}$
解释

  • ^
    字符串的开头
  • [a-zA-Z,.!?]*
    匹配列出的任何项的0+倍(无数字)
  • (?:\d[a-zA-Z,.!?]*){0,3}
    重复0-3次,匹配单个数字,后跟可选列出的字符(同样没有数字)
  • $
    字符串结尾

如果您不想匹配空字符串,并且支持前瞻:

^(?!$)[a-zA-Z,.!? ]*(?:\d[a-zA-Z,.!? ]*){0,3}$
请看另一个

假设你的意思是假设你的意思是这是我的两分钱:

^(?!(.*\d){4})[A-Za-z ,.!?\d]+$
在线查看


  • ^
    -启动字符串锚定
  • (?!
    -打开一个负面展望。
    • -打开捕获组。
      • *\d
        -将除换行以外的任何内容匹配到一个数字
      • ){4}
        -关闭捕获组并匹配它4次
    • -关闭反向前瞻
  • [A-Za-z,.!?\d]+
    -1个指定类中的字符
  • $
    -结束字符串锚定

我想应该包括你所描述的内容。

这是我的两分钱:

^(?!(.*\d){4})[A-Za-z ,.!?\d]+$
在线查看


  • ^
    -启动字符串锚定
  • (?!
    -打开一个负面展望。
    • -打开捕获组。
      • *\d
        -将除换行以外的任何内容匹配到一个数字
      • ){4}
        -关闭捕获组并匹配它4次
    • -关闭反向前瞻
  • [A-Za-z,.!?\d]+
    -1个指定类中的字符
  • $
    -结束字符串锚定


我认为应该包括您所描述的内容。

连续超过3个数字,或者总共超过3个数字?
a12a34
允许吗?我只想允许文本和、,。?!然后字符串中的任意位置最多有3个数字。所以H3LL0 123不会被允许对吧,我想现在一切都清楚了=)。我还添加了一个asnwer。一行超过3个数字,或者总共超过3个数字?
a12a34
允许吗?我只想允许文本和、,。?!然后字符串中的任意位置最多有3个数字。所以H3LL0 123不会被允许对吧,我想现在一切都清楚了=)。我还添加了一个asnwer。如何阻止“test123”。我正在测试,它仍然允许这样做。到目前为止,这是最好的工作虽然@tristannohr字符串
test123
conatins为3位,不超过3位,因此它是有效的。啊,我的错误。我真不敢相信我错过了。非常感谢你的帮助!我已将您标记为最佳答案。该块如何显示“test123”。我正在测试,它仍然允许这样做。到目前为止,这是最好的工作虽然@tristannohr字符串
test123
conatins为3位,不超过3位,因此它是有效的。啊,我的错误。我真不敢相信我错过了。非常感谢你的帮助!我认为你是最好的答案