我必须使用javascript正则表达式来验证输入。 我的有效输入应为 100 * 100 或同一输入字段中的多个输入,如 50 * 30,90 * 40(用逗号分隔)
输入内容不应类似于** 0 * 0或0或50或90 * 90,0 * 0或50 * 0或0 * 50 **
这些是图像的尺寸。
答案 0 :(得分:1)
您可以尝试^(?!0\*0)(?:\d+\*\d+,?)+$
。
^
和$
确保整个字符串匹配。(?!0\*0)
是否定性的检查字符串是否为0*0
的(?:
和)
表示内容是非捕获组\d+
匹配一个或多个数字(0–9)\*
与文字*
匹配\d+
匹配一个或多个数字(0–9),?
可选地匹配文字逗号+
匹配一个或多个前面的模式((?:\d+\*\d+,?)
)已知错误:50*520*4
个匹配项。
编辑:找到了该错误的解决方法。
^(?:(?!0\*0)\d+\*\d+,)*(?:(?!0\*0)\d+\*\d+)$
编辑:您已编辑问题,以明确表明您不希望匹配50*5,0*0
。这可以通过将否定前瞻项放在重复匹配项中作为^(?:(?!0\*0)\d+\*\d+,?)+$
编辑:您提到不想匹配0*[anything]
和[anything]*0
。尝试^(?:(?!0\*)\d+\*(?!0,)\d+,)*(?:(?!0\*)\d+\*(?!0$)\d+)$
。
使用变通方法on this RegExr demo来使用最新的正则表达式。