3

我知道 a.是匹配正则表达式中的任何字符,但我对这些结果有点困惑,希望有人能解释一下:

".".match("[+-\/]") //matches
".".match("[+\-\/]") //matches
".".match("[+\/]") //null
".".match("[\+\/]") //null
".".match("[-\/]") //null
".".match("[+-]") //null

是什么让+-\/JS 变得“是的,这看起来像一个句号。”有什么神奇之处?

4

2 回答 2

4

ASCII 码+是 43,/是 47。

[+-\/]匹配字符范围+/: +, ,, -, ., /.; 所以.是匹配的。


转义-在这里没有效果。

"[+\-\/]" == "[+-/]" // => true.

/[+\-\/]/如果你只想匹配,你应该使用正则表达式字面量 ( ) +, -, /。或者,转义\本身:(如果您使用字符串文字,则"[+\\-/]"不需要转义)/

于 2013-10-26T05:42:19.490 回答
0

比上面的答案更进一步,您可以使用这个表达式[--/]更加具体(而不是匹配 between +and/包含其他可能性,这只是 between -and /

这是我使用它的一个简单示例 - 将美元金额与小数匹配(同时不捕获货币符号):

表达:\d+[--/]\d{2}

匹配类似:110.30

我只是将其添加为评论,但还没有足够的代表。

于 2015-03-19T21:37:48.287 回答