使用JavaScript正则表达式提取子字符串;

时间:2014-03-09 19:44:27

标签: javascript regex

考虑以下代码:

var myregexp = "\\*(.+)"; // set from another subsystem, that's why I'm not using a literal regexp
var input = "Paypal *Steam Games";
var output = input.match(new RegExp(myregexp, 'gi'), "$1");

输出为["*Steam Games"],但我希望它只是["Steam Games"]

有什么问题?

PS我今天发现的一个很好的资源:http://regex101.com/#javascript

2 个答案:

答案 0 :(得分:2)

match doesn’t accept a second argument.

由于你设置了全局标志(并且我认为它是有意的),你需要exec才能找到所有第一组:

var m;

while ((m = re.exec(input)) {
    alert(m[1]); // Get group 1
}

答案 1 :(得分:1)

var str = "Paypal *Steam Games";

var reg = /\w+\s?\*(\w+\s?\w+)/; // or your exp will work too `/\*(.+)/;`

console.log(reg.exec(str)[1]); // result Steam Games

JSFiddle

Steam Games exp

的帮助下,您将从字符串中获得/\w+\s?\*(\w+\s?\w+)/

在JavaScript中有三个主要的RegExp函数:

  

exec 一个执行搜索匹配的RegExp方法   串。它返回一组信息。

     

match 执行搜索匹配的字符串方法   串。它返回一个信息数组,或者在不匹配时返回null。

     

test 一个RegExp方法,用于测试字符串中的匹配项。它   返回true或false。