用于javascript的UK货币正则表达式
我想要的正则表达式匹配英国货币(即13.00英镑、9999.99英镑和12333333.02英镑),但不允许负值(-2.17英镑)或零值(0.00英镑或0英镑) 我曾试图自己创造一个,但我已经陷入了一个正确的混乱 得到了很大的帮助 谢谢 这样就可以了(好吧,主要是…) 利用^和$确保字符串中没有负数或其他字符,并假定将使用逗号。英镑符号和便士是可选的 编辑:意识到您说过非零,所以将第一个\d替换为[1-9] 更新:有人指出上述金额与0.01英镑不符。下面的改进是可以实现的,但是现在有一个复杂的级别,首先测试/[1-9]/可能更好,然后是上面的-还没有对其进行基准测试用于javascript的UK货币正则表达式,javascript,regex,Javascript,Regex,我想要的正则表达式匹配英国货币(即13.00英镑、9999.99英镑和12333333.02英镑),但不允许负值(-2.17英镑)或零值(0.00英镑或0英镑) 我曾试图自己创造一个,但我已经陷入了一个正确的混乱 得到了很大的帮助 谢谢 这样就可以了(好吧,主要是…) 利用^和$确保字符串中没有负数或其他字符,并假定将使用逗号。英镑符号和便士是可选的 编辑:意识到您说过非零,所以将第一个\d替换为[1-9] 更新:有人指出上述金额与0.01英镑不符。下面的改进是可以实现的,但是现在有一个复杂的级
/^£?(([1-9]{1,3}(,\d{3})*(\.\d{2})?)|(0\.[1-9]\d)|(0\.0[1-9]))$/
简要说明:
- 匹配字符串的开头,后跟可选的“£”
- 然后匹配以下任一项:
- 金额>1英镑,可能采用逗号分隔分组和可选便士
- 或a=0.10英镑的金额
- 或者你可以只传球两次:
验证格式,以及/^£\d{1,3}(,\d{3})*(\.\d{2})?$/
确保至少有一位数字为非零/[1-9]/
当然,这比一次完成效率要低(感谢annakata提供的基准信息),但是对于第一次实现,只要“说出你想要的”就可以显著减少开发时间。在Unix/Linux下,在JavaScript文件中键入“£”符号并不总是可能的,所以我倾向于使用它的十六进制表示,因此: /^\xA3?\d{1,3}([,]\d{3}\d)*?([.]\d{1,2})$/ 这似乎考虑到了我遇到的所有英国货币金额表示组合。/xA3?\d{1,}(?:\,?\d+*(?:。\d{1,2})$/; 说明:- ^匹配字符串的开头或行的开头
- xA3匹配一个“£”字符(字符代码163)
- ??前面标记的0和1之间匹配的量词
- \d匹配任何数字字符(0-9)
- {1,}匹配前面的一个或多个标记
- (?:将多个令牌分组在一起,而不创建捕获组
- \,匹配“,”字符(字符代码44)
- 前面标记的1和2之间的{1,2}匹配
- $匹配字符串的结尾,如果使用多行标志,则匹配行的结尾(
jquery.validator.addMethod('currency',function(value,element){var result=value.match(/^\xA3?\d{1,3})([,]\d{3}\d)*?([.]\d{1,2})$/);console.log(“val currency”+result);返回结果;},,,'请指定一个英镑金额。
/[1-9]/