如何匹配 900 和 950 之间的数字?
我有以下正则表达式匹配数字900-950:
/9[0-5][0-9]{3}/
但它也匹配 955 字符串,
我如何修复它以匹配直到900到950只?
答案 0 :(得分:7)
要匹配900
- 950
号码范围,请使用
^9(?:[0-4][0-9]|50)$
或者,如果它在更大的文本中
(?<!\d)9(?:[0-4][0-9]|50)(?!\d)
请参阅此regex demo
^
是字符串锚点的开头,$
是字符串锚点的结尾。
(?<!\d)
是负面的后视,确保前面的符号不是数字。 (?!\d)
是一个负向前瞻,确保下一个字符不是数字。
使用非捕获组(?:...)
,我们避免捕获我们不需要的东西。
还有一个选项:如果数字介于非单词字符之间,则可以利用单词边界:
\b9(?:[0-4][0-9]|50)\b
请注意,我使用的是9(?:[0-4][0-9]|50)
,而不是(?:9[0-4][0-9]|950)
。虽然第二个更具可读性,但从性能的角度来看效率较低,因为9(?:[0-4][0-9]|50)
涉及较少的回溯(即如果没有匹配则更快失败)。
答案 1 :(得分:4)
将其拆分为OR:
/(9[0-4][0-9]|950)/
9[0-4][0-9]
将匹配900到949
950
涵盖您的950案例而无需重复
如果你想确保不匹配其他东西(比如你可能不想匹配1950,可能只想自己匹配950):
/(?<![0-9])(9[0-4][0-9]|950)(?![0-9])/
(?<![0-9])
表示之前不允许输入数字,(?![0-9])
表示不允许输入数字(负面看后面和后面)
答案 2 :(得分:3)
我认为最简单的就是:
.inside-event.btn {
width: auto;
min-width: 100%;
display: inline-block;
}