我正在使用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

10-08 02:12