找到许多正则表达式,但在我的javascript中尝试它们失败
我有这段购物车代码,但如果有小数点,它就会失败。我尝试替换正则表达式,但它返回一个NaN而不是数字错误: 代码: 要匹配$123.56或$12.5之类的字符串,可以使用以下固定正则表达式:找到许多正则表达式,但在我的javascript中尝试它们失败,javascript,regex,Javascript,Regex,我有这段购物车代码,但如果有小数点,它就会失败。我尝试替换正则表达式,但它返回一个NaN而不是数字错误: 代码: 要匹配$123.56或$12.5之类的字符串,可以使用以下固定正则表达式: ^\$(\d+(?:\.\d{1,2})?)$ ^ ^ 看 它还将匹配整数值,因为?非捕获组后面的量词?:\。\d{1,2} 注意:这实际上是同一个正则表达式,我在最后一个正则表达式之前删除了反斜杠,并在模式末尾添加了一个,以正确关闭第一个也是唯一一个捕获组。要匹配$1
^\$(\d+(?:\.\d{1,2})?)$
^ ^
看
它还将匹配整数值,因为?非捕获组后面的量词?:\。\d{1,2}
注意:这实际上是同一个正则表达式,我在最后一个正则表达式之前删除了反斜杠,并在模式末尾添加了一个,以正确关闭第一个也是唯一一个捕获组。要匹配$123.56或$12.5之类的字符串,可以使用此固定正则表达式:
^\$(\d+(?:\.\d{1,2})?)$
^ ^
看
它还将匹配整数值,因为?非捕获组后面的量词?:\。\d{1,2}
注意:这实际上是同一个正则表达式,我在最后一个正则表达式之前删除了反斜杠,并在模式末尾添加了一个,以正确关闭第一个也是唯一一个捕获组。尝试以下操作:
var val = this.value.match(/^\$(\d+\.?\d*)$/);
试试这个:
var val = this.value.match(/^\$(\d+\.?\d*)$/);
如果我理解正确,您只需要将数字与十进制值或无十进制值进行匹配。您可以使用以下选项:
^\$([\d\.]+)$
如果要将小数限制为两位,请将其放入未捕获的组中,并使用{}运算符:
^\$(\d+(?:\.\d{1,2})?)$
^:字符串/行的开头。
\$:按字面匹配$。
:启动捕获组。
\d+:匹配一个或多个数字
?::启动一个不捕获的组。
\这是一场比赛。字面上
\d{1,2}:匹配长度为1或2的数字。
?:惰性选择器,整个十进制方案是可选的,因此您可以匹配整数。
$:匹配字符串/行的结尾。
如果我理解正确,您只需要将数字与十进制值或无十进制值进行匹配。您可以使用以下选项:
^\$([\d\.]+)$
如果要将小数限制为两位,请将其放入未捕获的组中,并使用{}运算符:
^\$(\d+(?:\.\d{1,2})?)$
^:字符串/行的开头。
\$:按字面匹配$。
:启动捕获组。
\d+:匹配一个或多个数字
?::启动一个不捕获的组。
\这是一场比赛。字面上
\d{1,2}:匹配长度为1或2的数字。
?:惰性选择器,整个十进制方案是可选的,因此您可以匹配整数。
$:匹配字符串/行的结尾。
您可以在上尝试JS的正则表达式:您的正则表达式只查找整数。A.这不是一个数字。您正在添加字符串,而不是数字。/^\$\d+?:\。\d{1,2}\?$/是一个语法错误:SyntaxError:unterminated parentional为什么连regexp都要匹配自己的代码?在值周围放置一个span或其他内容,然后直接获取它。或者将整个购物车始终存储在javascript中,并从中更新您的值。这似乎是错误的。2在这个regexp中开始并归零+1个字符。你可以试试JS的正则表达式:你的正则表达式只查找整数。A.这不是一个数字。您正在添加字符串,而不是数字。/^\$\d+?:\。\d{1,2}\?$/是一个语法错误:SyntaxError:unterminated parentional为什么连regexp都要匹配自己的代码?在值周围放置一个span或其他内容,然后直接获取它。或者将整个购物车始终存储在javascript中,并从中更新您的值。这似乎是错误的。2在这个regexp中开始并归零+1个字符。如果可以信任数据,第一个就可以了,但是如果使用1.1.1.1.1.1.1.1.1……….1………@epascarello,很好,在这种情况下,您可以这样做:^\$[\d]+\.[\d]+$您不需要将一个速记类\d放入字符类。如果可以信任数据,第一个就可以了,但是如果使用1.1.1.1.1.1.1.1.1………@epascarello,很好的一点,在这种情况下,您可以这样做:^\$[\d]+\.[\d]+$您不需要为字符类添加一个速记类\d。我没有编写正则表达式的解释,因为它是您的正则表达式,有两个修改:我在最后一个修改之前删除了反斜杠,并在模式末尾添加了一个,以正确关闭第一个也是唯一一个捕获组。我以为您的意图是只匹配1或2个小数或整数,我看我错了。我没有写正则表达式的解释,因为它是您的正则表达式,有2个修改:我在最后一个之前删除了反斜杠,并在模式的末尾添加了一个,以正确关闭第一个也是唯一一个捕获组。我以为您的意图是只匹配1或2个小数或整数,我看我错了。