我知道.
匹配正则表达式中的任何字符,但我对这些结果感到有些困惑,希望有人可以解释它们:
".".match("[+-\/]") //matches
".".match("[+\-\/]") //matches
".".match("[+\/]") //null
".".match("[\+\/]") //null
".".match("[-\/]") //null
".".match("[+-]") //null
+-\/
导致JS走向“是的,看起来像是一个时期。”这是多么神奇?
答案 0 :(得分:4)
+
的ASCII代码为43,/
为47。
[+-\/]
匹配+
和/
之间的字符范围:+
,,
,-
,.
,{{ 1}} .;所以/
匹配。
转义.
此处无效。
-
如果您只想匹配"[+\-\/]" == "[+-/]" // => true.
,/[+\-\/]/
,+
,则应使用正则表达式文字(-
)。或者,转义/
本身:\
(如果您使用字符串文字,则无需转义"[+\\-/]"
)
答案 1 :(得分:0)
比上面的答案稍微进一步,您可以使用此表达式[--/]
更具体(而不是在包含其他可能性的+
和/
之间进行匹配,仅在-
和/
之间。
以下是我使用此功能的一个简单示例 - 将美元金额与小数相匹配(但未捕获货币符号):
表达式:\d+[--/]\d{2}
匹配类似:110.30
我只是将其添加为评论,但尚未足够的代表。