使用正则表达式检查最少8位的字符串

Rah*_*ali 3 ruby regex

我有正则表达式如下:

     /^(\d|-|\(|\)|\+|\s){12,}$/
Run Code Online (Sandbox Code Playgroud)

这将允许数字,(,),空格.但我想确保字符串包含至少8位数字.一些允许的字符串如下:

      (1323  ++24)233
      24243434 43
      ++++43435++4554345  434
Run Code Online (Sandbox Code Playgroud)

它不应该允许字符串:

     ((((((1213)))
     ++++232+++
Run Code Online (Sandbox Code Playgroud)

Ani*_*dha 7

Look ahead在开始时使用你的正则表达式..

/^(?=(.*\d){8,})[\d\(\)\s+-]{8,}$/
  ---------------
          |
          |->this would check for 8 or more digits
Run Code Online (Sandbox Code Playgroud)

(?=(.*\d){8,})zero width look aheadchecks为0到许多字符(即.*),接着是数字(即\d)8至多次(即{8,0})

(?=)被称为零宽度,因为它不消耗字符..只是检查


要将它重写为14位数,你可以做到

/^(?=([^\d]*\d){8,14}[^\d]*$)[\d\(\)\s+-]{8,}$/
Run Code Online (Sandbox Code Playgroud)

试试这里