正则表达式阻止字符串中超过3个数字

我试图阻止包含超过 3 个数字的任何字符串并阻止特殊字符。我有特殊字符部分。我只是缺少数字部分。

例如:

"Hello 1234" - Not Allowed
"Hello 123" - Allowed

我尝试了以下方法:

"Hello 1234" - Not Allowed
"Hello 123" - Allowed

最后一个是我得到的最接近的,因为它完全防止输入任何特殊字符和任何数字。

我已经浏览了以前的帖子,但我的内容很短。

编辑以澄清

本质上,我试图找到一种方法来防止客户在表单上输入 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,.!? ]+$
^(?!.*d{4})[a-zA-Z0-9,.!? ]+$

正则表达式演示

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

解释

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

正则表达式演示

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

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

查看另一个正则表达式演示


以上是正则表达式阻止字符串中超过3个数字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>