用于从字符串创建有效id的函数。正则表达式

时间:2014-08-14 21:40:04

标签: javascript jquery regex

我从元素name属性创建了一个ID,并且它们有一些不允许的字符,我想创建一个函数来替换charcters,如果它们不在_的列表中。我试图谷歌它,但我发现的只是正则表达的例子,而不是我正在寻找的地方。

这就是我所做的:

/([^A-Za-z0-9[\]{}_-])\s?/g

但这并不排除][,也可能包含其他一些字符。

如何使_取代[A-Za-z0-9]-_.:的所有字符?

EDITED

..如果第一个字符不是数字,则将其设为一个。

如果有人知道更好的方法,请分享。

2 个答案:

答案 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