我正在使用Js正则表达式来验证英镑的货币(670,170p,£17.98p,£56.90867,007.89p),并且不应允许使用以下值(19x,18p.12,£p),但它会不断失败, ,,
〜任何帮助将不胜感激
var reg= /^£?[1-9]{1,3}(,\d{3})*(\.\d{2})?$/ ;
最佳答案
最接近的正则表达式为:
£?\ d +(?:\。\ d +)?p?\ b
测试文件:https://regex101.com/r/09wjc7/1
但是它仅在18p.12中失败,因为它与它的两组匹配。第一个18p有效,第二个12p有效。
如果在文本中查找文本,则可以为其添加文本边界,但是如果按行查找,则可以在正则表达式中添加^(行的开头)和$(行的结尾)字符,这将忽略上面的情况。
说明:
£?团体面前可选的£符号
\ d +必需的整数(一个或多个)
(?:\。\ d +)?
(?:不匹配组的开始
\。点字符
\ d +必需的整数(一个或多个)
)?使所有这些组为可选
?可选的p
字符
\ b应该以单词边界结尾。 https://www.regular-expressions.info/wordboundaries.html