正则表达式捕获美元金额也赶上@符号

时间:2014-01-10 20:45:03

标签: regex

我正在尝试匹配简单的美元字符串($ 34.21)。我的正则表达式如下。

\$\d+.([0-9][0-9])

我正在捕捉以下字符串,但我不知道为什么。

@$23.23

at符号是否具有某种特殊含义?我没有在我的正则表达式备忘单上看到它,这让我烦恼。

谢谢,mj

2 个答案:

答案 0 :(得分:2)

你应该逃避\.,你可能需要在模式周围添加start(^)和end($)锚点:

^\$\d+\.([0-9][0-9])$

锚点用于确保在匹配的字符串之前或之后输入字符串中不允许其他字符。

此外,根据您使用*的确切语言/平台,这可能会进一步简化为:

^\$\d+\.(\d\d)$

*某些正则表达式引擎将\d视为等同于[0-9],而在其他引擎上,它将匹配任何Unicode数字,包括来自其他数字系统的数字。

答案 1 :(得分:1)

使用行开头和行结束锚来确保不匹配不需要的输入:

^\$\d+\.([0-9][0-9])$

OR

^\$\d+\.\d{1,2}$