javascript的英国货币正则表达式

Sni*_*fer 3 javascript regex

我正在使用与英国货币匹配的正则表达式(即£13.00,£9,999.99和£12,333,333.02),但不允许负值( - £2.17)或零值(£0.00或0).

我试图自己创造一个,但我有一个正确的混乱!

任何帮助都很受欢迎.

谢谢!

ann*_*ata 5

这样做(主要是......)

/^£?[1-9]{1,3}(,\d{3})*(\.\d{2})?$/
Run Code Online (Sandbox Code Playgroud)

利用^和$确保字符串中没有否定字符或其他字符,并假定将使用逗号.英镑符号和便士是可选的.

编辑:意识到你说非零所以用[1-9]取代了第一个\ d

更新:有人指出上述不符合£0.01.下面的改良,但现在有一个复杂的水平,这里很可能是更好的测试/ [1-9] /,然后再上面-没有基准它.

/^£?(([1-9]{1,3}(,\d{3})*(\.\d{2})?)|(0\.[1-9]\d)|(0\.0[1-9]))$/
Run Code Online (Sandbox Code Playgroud)

简要说明:

  • 匹配字符串的开头,后跟可选的"£"
  • 再搭配两种:
    • a>£1金额,可能有逗号分隔的分组和可选的便士
    • 或者a <£1> =£0.10金额
    • 或者<=£0.09金额
  • 然后匹配行尾

你需要添加到正则表达式中的便士(上面的零)的分数越多,效率就越低.