正则表达式无法正常工作,当它不应该返回null

时间:2012-11-16 03:28:43

标签: javascript regex

我知道那里有一百万个正则表达式的问题,我向你保证我已经阅读了一百万个这样的问题!这只是那些不适合我的事情之一。我试图提取价格编号(小数或非小数)和项目名称(价格编号和< br />之间的所有内容)

输入:

var content = "$22 M Uniform <br/>" 

或类似的东西

var content = "$39 Day / Evening Class Tuition  <br/>"

var content = "$12.8 Weekend Class Payment <br/>"

我的代码:

   var itemprice = content.match(/(\d+)(d*(\.\d{1,2}))/);
   var itemname = content.match(/(\s)(.*?)</);

我的问题:

我的itemname正常工作并正常返回,但是当我调试它时,我的号码搜索器似乎无法在浏览器中工作itemprice设置为空。这很奇怪,因为当我在这里尝试代码http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_i时,它可以正常工作,提取数字。

对于网站,我的代码如下:

 var str = "$39.56 Day / Evening Class Tuition  <br>";
 var patt1 =/(\d+)(d*(\.\d{1,2}))/;
 var matches = str.match(patt1)
 alert(matches[0]);

1 个答案:

答案 0 :(得分:2)

带有可选点的简单十进制正则表达式是

/\d+(\.\d{1,2})?/

在这里演示 - http://jsfiddle.net/JXdbg/2/

对于美元符号货币检测,我会在其前面添加$

/\$\d+(\.\d{1,2})?/