正则表达式验证最后一个字符

5
拥有这样的正则表达式模式:ab*d,为什么它会返回匹配真值以适用于输入abbbde?如何更改以检查最后一个字符?
2个回答

13

让我们分析一下你的正则表达式:

a - 匹配 "a"

b* - 匹配任意数量的 "b"

d - 匹配 "d"

因为 * 可以匹配任意数量的 "b"。

$ 匹配行尾,所以

ab*d$ 

应该匹配行尾(以确保后面没有其他内容)

不过\s将匹配任何空格,所以另一个选项是

ab*d\s 

好的,但如果我在末尾添加$,它也会检查长度吗?因为现在abd$不验证abdgdgdgd,我认为表示0或更多任何字符。 - kosnkov
*表示前面的字符可以出现任意次数 - user230910
那么如何实现0个或多个任意字符? - kosnkov
b+ 表示一个或多个 b。 - user230910
任何数量的任何字符 = [\s\S]* - user230910
. = 任何字符,* = 任意数量 - user230910

8

为确保模式的最后一个字符是$,您需要在模式末尾添加$

$在正则表达式中被称为字符串结尾锚点(End of String Anchor)。您可以在这里阅读更多关于锚点的内容:http://www.regular-expressions.info/anchors.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接