找到许多正则表达式,但在我的javascript中尝试它们失败

找到许多正则表达式,但在我的javascript中尝试它们失败,javascript,regex,Javascript,Regex,我有这段购物车代码,但如果有小数点,它就会失败。我尝试替换正则表达式,但它返回一个NaN而不是数字错误: 代码: 要匹配$123.56或$12.5之类的字符串,可以使用以下固定正则表达式: ^\$(\d+(?:\.\d{1,2})?)$ ^ ^ 看 它还将匹配整数值,因为?非捕获组后面的量词?:\。\d{1,2} 注意:这实际上是同一个正则表达式,我在最后一个正则表达式之前删除了反斜杠,并在模式末尾添加了一个,以正确关闭第一个也是唯一一个捕获组。要匹配$1

我有这段购物车代码,但如果有小数点,它就会失败。我尝试替换正则表达式,但它返回一个NaN而不是数字错误:

代码:

要匹配$123.56或$12.5之类的字符串,可以使用以下固定正则表达式:

^\$(\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个小数或整数,我看我错了。