JavaScript中的preg_match?

hsz*_*hsz 69 javascript regex mootools

是否有可能在JavaScript做这样的事情preg_match确实在PHP

我希望能够从字符串中获取两个数字:

var text = 'price[5][68]';
Run Code Online (Sandbox Code Playgroud)

分为两个独立的变量:

var productId = 5;
var shopId    = 68;
Run Code Online (Sandbox Code Playgroud)

编辑:我也使用,MooTools如果它会有所帮助.

god*_*ats 105

JavaScript有一个RegExp符合你想要的对象.该String对象具有match()帮助您的功能.

var matches = text.match(/price\[(\d+)\]\[(\d+)\]/);
Run Code Online (Sandbox Code Playgroud)

  • 对于其他googlers; `text.match`将返回匹配的结果.所以`var match = text.match(/ price\[(\ d +)\]\[(\ d +)\] /)`然后`alert(match [1]);` (29认同)

kan*_*der 29

var text = 'price[5][68]';
var regex = /price\[(\d+)\]\[(\d+)\]/gi;
match = regex.exec(text);
Run Code Online (Sandbox Code Playgroud)

匹配[1]和匹配[2]将包含您要查找的数字.


Tra*_*urn 21

var thisRegex = new RegExp('\[(\d+)\]\[(\d+)\]');

if(!thisRegex.test(text)){
    alert('fail');
}
Run Code Online (Sandbox Code Playgroud)

我发现test可以执行更多的preg_match,因为它提供了一个布尔返回.但是,您必须声明一个RegExp var.

提示:RegExp在开始和结束时添加它自己的/所以不要传递它们.

  • 你也可以用`/\[(\ d +)\]\[(\ d +)\]/.test(text)来缩短它. (6认同)

Dan*_*ker 5

这应该工作:

var matches = text.match(/\[(\d+)\][(\d+)\]/);
var productId = matches[1];
var shopId = matches[2];
Run Code Online (Sandbox Code Playgroud)