在Javascript正则表达式中以匹配的字符串向后移动

时间:2012-05-02 17:47:06

标签: javascript regex match backtracking

在我的应用程序中,HTML元素的id属性应以#开头。 根据HTML5,id属性的唯一限制是,它不应该包含任何空格,并且应该至少有一个字符长。 所以我写了下面的正则表达式,根据上面提到的约束

匹配id属性
idMatch: /^#\S+$/

现在我要删除字符串开头的#字符... 我的问题是,我可以在一个正则表达式中执行这两个操作...即... 我可以使用单个正则表达式在匹配上述约束的字符串中的第一个'#'(字符可能包含任何非空白字符,包括'#')之后提取字符。匹配的结果应该做两件事 1)从一组字符串中识别id字符串(id以#开头并遵循HTML5 id命名规则) 2)首先在#..

之后提取识别出的字符串的一部分

2 个答案:

答案 0 :(得分:1)

这是一个小片段,只需在替换方法中执行正则表达式文本,如果匹配则返回不带#的id。创建一个小帮助函数,使其更易于使用。

var regex = /^#\S+$/,
    id = '#foo',
    str;

str = id.replace(regex, function($1) {
    return $1.split('#').join('');
});

console.log(str);

答案 1 :(得分:1)

您可以在RegExes中使用括号来做您想做的事。

/^#(\S+$)/.test(testString);
var idWithoutHash = RegExp.$1;