使用javascript匹配id选择器的正则表达式

时间:2012-04-30 21:59:17

标签: javascript regex

在我的程序中,我想验证html标签的id .. 我的函数id作为字符串传递,前面是#.. 我发现,HTML中的命名和id规则是,

  • 必须以字母A-Z或a-z
  • 开头
  • 可以跟着:字母(A-Za-z),数字(0-9),连字符(“ - ”)和下划线(“_”) 所以我写了以下正则表达式。

    /(^ | \ S)(#{1})([A-ZA-Z])([^ A-ZA-Z0-9] {0})/克;

但它给了我错误的结果。我的正则表达式出了什么问题?

2 个答案:

答案 0 :(得分:2)

/#[a-z][\w\d-]*\b/gi
  • \w表示来自a-z,A-Z和下划线(_)
  • 的字母
  • \d表示0-9
  • 的整数
  • \b表示字边界
  • i标志是抓住第一个字母而不管大小写

编辑:很抱歉忘记了小组开头的边界。

var str = '#sss #s23 dd#ww';
// #ww will be omitted because # is not the
// first char in the char group there.
var rx = /(^|\s)(#[a-z][\w\d-]*)\b/gi;
var arr = [];
str.replace(rx, function(){arr.push(arguments[2])});
// this is just to catch the id's.
// it won't modify str.
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

答案 1 :(得分:1)

尝试:

/^#[a-z]{1}[a-z0-9_-]*$/i