在我的程序中,我想验证 html 标记的 id。我的函数 id 作为前面带有 #. 的字符串传递。我发现,HTML 中的命名规则和 id 是,
- 必须以字母 AZ 或 az 开头
后面可以跟:字母(A-Za-z)、数字(0-9)、连字符(“-”)和下划线(“_”) 所以我写了下面的正则表达式。
/(^|\s)(#{1})([a-zA-Z])([^a-zA-Z0-9]{0})/g;
但它给了我错误的结果。我的正则表达式有什么问题?
在我的程序中,我想验证 html 标记的 id。我的函数 id 作为前面带有 #. 的字符串传递。我发现,HTML 中的命名规则和 id 是,
后面可以跟:字母(A-Za-z)、数字(0-9)、连字符(“-”)和下划线(“_”) 所以我写了下面的正则表达式。
/(^|\s)(#{1})([a-zA-Z])([^a-zA-Z0-9]{0})/g;
但它给了我错误的结果。我的正则表达式有什么问题?
/#[a-z][\w\d-]*\b/gi
\w
表示来自 az、AZ 和下划线 (_) 的字母\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]);
}
尝试:
/^#[a-z]{1}[a-z0-9_-]*$/i