我从元素name
属性创建了一个ID,并且它们有一些不允许的字符,我想创建一个函数来替换charcters,如果它们不在_
的列表中。我试图谷歌它,但我发现的只是正则表达的例子,而不是我正在寻找的地方。
这就是我所做的:
/([^A-Za-z0-9[\]{}_-])\s?/g
但这并不排除]
和[
,也可能包含其他一些字符。
如何使_
取代[A-Za-z0-9]
,-
,_
,.
,:
的所有字符?
EDITED
..如果第一个字符不是数字,则将其设为一个。
如果有人知道更好的方法,请分享。
答案 0 :(得分:11)
您是否尝试过非单词字符(即\W
)匹配的所有非A-Za-z0-9_(也就是空格)
所以
/\W/g
在javascript中像
var id = "What ever your id is [] {} - &";
var cleanedId = id.replace(/\W/g,'_'); //cleanedId is "What_ever_your_id_is__________"
假设你用当然的下划线替换它们
示例正则表达式here
答案 1 :(得分:1)
您应该使用replace()函数,如下所示:
var temp = "some id to validate";
var i = "";
if(!$.isNumeric(temp[0])){
i = parseInt(Math.random()*10);
}
temp = i+temp.replace(/([^A-Za-z0-9[\]{}_.:-])\s?/g, '');
//here the id is a valid id
请参阅jsFiddle