我有一个正则表达式,匹配1到28之间的数字:
[1-9]|1[0-9]|2[0-8]
如果不将其修改为:
,则无效^([1-9]|1[0-9]|2[0-8])$
任何人都可以解释我为什么需要这个?我想在字符串之间使用它。
答案 0 :(得分:1)
^
和$
所做的只是从头到尾进行正则表达式匹配。
如果没有这些,122
也会匹配(1
和22
)。
\b([1-9]|1[0-9]|2[0-8])\b
<小时/>
另一种选择,如果您的号码可以成为单词的一部分,则使用negative lookarounds:
(?!<\d)([1-9]|1[0-9]|2[0-8])(?!\d)
答案 1 :(得分:1)
构造表达式以检查整个数字。添加锚^
和$
可确保字符串完全匹配您的表达式,而不是匹配字符串的某些部分。
例如,字符串12345
在没有锚点的情况下匹配,因为1
,2
,3
,4
,5
,{{ 1}}和12
都是23
的子字符串,代表12345
和1
之间的数字。
但是,对于锚点,它将不匹配,使您的第二个表达式正确。
答案 2 :(得分:0)
您应该使用锚点来匹配整个选定数字的字符串。 ^将锚定在字符串的开头,$ will将锚定在字符串的末尾。