您好我正在验证一个只接受float的文本框。我使用这个正则表达式
^(?:[1-9]\\d*|0)?(?:[.]\\d+)?$
验证它。它按预期工作。现在我想在正则表达式中添加用户定义的字符串,以便其含义不应更改。有办法吗?
答案 0 :(得分:2)
要验证输入是否为浮点数,在大多数情况下不需要正则表达式,只需使用内置类来解析字符串输入,并检查字符串是否等于另一个,使用相应的字符串方法。 / p>
如果您无法访问代码,则可以使用alternation:
"^(?:(?:[1-9]\\d*|0)?(?:[.]\\d+)?|MY STRING)?$"
^^^ ^^^^^^^^^^^^
简而言之:
^
- 字符串的开头(?:
- 启动可选的非捕获组
(?:[1-9]\d*|0)?(?:[.]\d+)?
- 您之前的模式|
- 或MY STRING
- 文字MY STRING
substring )?
- 可选(由于?
)非捕获组的结尾$
- 字符串结尾如果MY STRING
是应该被视为文字的用户输入变量,而如果您有权访问代码,那么您应该考虑使用某些正则表达式转义方法转义该字符串(在Java中,使用Pattern.quote(user_str)
)。