gpt4 book ai didi

javascript - .test() 的正则表达式漏报

转载 作者:行者123 更新时间:2023-11-27 23:36:57 25 4
gpt4 key购买 nike

我正在制作一个 Chrome 扩展程序,它会在页面中搜索美元金额(小数点后面紧跟“$”的数字,不超过两位小数),然后添加一点该值在另一个页面中的金额货币。我找到了一个与这些参数完全匹配的常用正则表达式。

/^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$/g

所以我想我已经有了一个良好的开端。我只编写了几个月的代码,在我遇到的所有概念中,正则表达式让我最头疼。我用以下方法测试我 Shiny 的新表达:

var regex = /^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$/g;

var str = "The total it $2.25 Would you like paper or plastic?";

r = regex.test(str);
console.log(r);

当然,那个笨蛋会返回 false!我尝试了更多带有“2.25”或“$2”或“$2.256”的字符串,只是为了确定它们都返回 false。

我完全被难住了。推荐使用该表达式,我正确使用了 .test() 。我能想到的只是这可能是一些与正则表达式无关的新细节。

感谢您的宝贵时间。

最佳答案

您过于复杂的正则表达式正在检查整个字符串。删除分别表示字符串开头和结尾的 ^$。然后删除 /g 标志,该标志用于搜索多个匹配项。

checking for /\$\d+\.\d\d/ 有什么问题吗? ?

我找到http://regex101.com/成为有用的资源。

关于javascript - .test() 的正则表达式漏报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com