考虑以下代码:
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
答案 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
在Steam Games
exp
/\w+\s?\*(\w+\s?\w+)/
在JavaScript中有三个主要的RegExp函数:
exec 一个执行搜索匹配的RegExp方法 串。它返回一组信息。
match 执行搜索匹配的字符串方法 串。它返回一个信息数组,或者在不匹配时返回null。
test 一个RegExp方法,用于测试字符串中的匹配项。它 返回true或false。