我有这个无法正常运作的javascript:

function test(id) {
    if (id.match('^(.+?)#')) {
        alert(RegExp.$1);
    }
}

test('test#f');   // should alert 'test'
test('tes4t#f');  // should not alert


http://jsfiddle.net/r7mky2y9/1/

我只想匹配出现在a-zA-Z前面的#字符。我尝试调整正则表达式,使它为(.+?)[a-zA-Z],但我感觉不正确。

最佳答案

那是您的正则表达式101:

var m = id.match(/^([a-zA-Z]+)#/);
if (m) alert(m[1]);


在Javascript中,正斜杠之间定义了正则表达式。

另外,惰性量词在这里没有用。我还没有测试过表演,但是应该没有任何区别。

最后,利用match的返回值,该返回值返回并包含具有完整数学表达式的数组,其后是捕获的组。

10-01 20:51
查看更多