use*_*061 11 javascript regex ecmascript-5
我正在尝试将条目限制为特定格式.
如果条目有5500或5100,如01\01-5500-000-00那么我想要这个:
^[0-9]{2,}\\[0-9]{2}\-[0-9]{4}\-[0-9]{3}\-$
Run Code Online (Sandbox Code Playgroud)
但如果条目有除5500或5100以外的任何东西我想要这个:
^[0-9]{2,}\\[0-9]{2}\-[0-9]{4}\-[0-9]{3}\-[0-9]{2}$
Run Code Online (Sandbox Code Playgroud)
如何通过if then else想法实现这一目标?
Wik*_*żew 14
JavaScript正则表达式引擎不支持条件正则表达式语法,但它可以与包含2个备选方案的非捕获组一起使用:
一个有积极的前瞻和
第二个是逆转,负面的预测.
此正则表达式符合您的条件,并且兼容JavaScript:
^(?:(?=.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[0-9]{3}-|(?!.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[0-9]{3}-[0-9]{2})$
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
让我分解一下:
^ - 字符串开头(?:
(?=.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[0-9]{3}-- 具有(?=.*\b5[15]00\b)前瞻性的第一种选择,需要整个单词5500或5100字符串内部,以及您拥有的第一个模式| - 交替运营商(?!.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[0-9]{3}-[0-9]{2})- 第二个替代方案,其前面是(?!.*\b5[15]00\b)负向前瞻,确保字符串中没有5100或没有5500内部,然后才匹配您的第二个模式.$ - 字符串结尾.| 归档时间: |
|
| 查看次数: |
18192 次 |
| 最近记录: |