2 个或多个连续字母/数字的 ReGex

Moz*_*zes 0 javascript php regex validation

我正在尝试完成一个正则表达式,其中:

  1. 只允许使用 2 个连续的空格/连字符/逗号/点/斜杠。
  2. 最多允许 5 位数字(连续或不连续)。
  3. 不允许出现 3 个或更多连续字母。

我已经尝试过下面的正则表达式,它对于前两点效果很好,仍然需要实现第三点。

^(?=.{3,50}$)(?!.*(((\d{6}))|( {2})|(-{2})|(,{2})|(\.{2})|(\/{2})))([a-zA-Z0-9 \-,.\/])+$
Run Code Online (Sandbox Code Playgroud)

我正在使用这个正则表达式来验证用户输入的地址,如果有任何改进或建议,我将很高兴对其进行修改。

Time Square, Main Road, 2279 允许
Time-Square, Main Road-2279 允许
Time Square Main Road 不允许“双空格”
Time Square, Main Road, 22798741313 不允许 不允许
Time Square, Main Road.. 不允许 不允许
Time Square, Main Road// 不允许 不允许
Time Square Main Road,, 不允许 不允许
Time Square Main Road-- 不允许
------- 不允许
--// 不允许
--/ 不允许
ttttttttttttttttttttttttttt 不允许
-/- 不允许
-/- 不允许
.,. 不允许
,-, 不允许
/-/-/-/- 不允许

anu*_*ava 5

您可以将此正则表达式与否定先行条​​件一起使用:

^(?!.*  )(?!.*[-,/.]{2})(?!.*(?:[^\d\n]*\d){6})(?!.*([a-zA-Z])\1\1).{3,50}$
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

解释:

  • ^: 开始
  • (?!.* ): 不允许有 2 个连续空格
  • (?!.*[-,/.]{2}):不允许重复这些特殊字符
  • (?!.*(?:[^\d\n]*\d){6}): 不允许超过 5 位数字
  • (?!.*([a-zA-Z])\1\1):不允许同一字母连续 3 次重复
  • .{3,50}:匹配3到50个任意字符
  • $: 结尾