我有正则表达式如下:
/^(\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)
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 ahead其checks为0到许多字符(即.*),接着是数字(即\d)8至多次(即{8,0})
(?=)被称为零宽度,因为它不消耗字符..只是检查
要将它重写为14位数,你可以做到
/^(?=([^\d]*\d){8,14}[^\d]*$)[\d\(\)\s+-]{8,}$/
Run Code Online (Sandbox Code Playgroud)
试试这里