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

Cir*_*vis -1 javascript regex jquery

我从elements name属性创建一个ID,并且它们有一些不允许的字符,我想创建一个函数,如果它们不在列表中,则替换charcters _.我试图谷歌它,但我发现的只是regexp示例,其中不是我想要的地方.

这就是我所做的:

/([^A-Za-z0-9[\]{}_-])\s?/g
Run Code Online (Sandbox Code Playgroud)

但是这并不排除]和[,也许一些其他字符了.

我怎样才能让它替换所有字符_未[A-Za-z0-9],-,_,.,:?

EDITED

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

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

OJa*_*Jay 11

您是否尝试过非单词字符(即\W)匹配的所有非A-Za-z0-9_(这也意味着空格)

所以

/\W/g
Run Code Online (Sandbox Code Playgroud)

在javascript类似的东西

var id = "What ever your id is [] {} - &";
var cleanedId = id.replace(/\W/g,'_'); //cleanedId is "What_ever_your_id_is__________"
Run Code Online (Sandbox Code Playgroud)

假设你用一个下划线替换它们当然

例如正则表达式在这里

  • 这不能处理文本以数字开头的情况。 (2认同)

Eii*_*iki 3

您应该使用 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
Run Code Online (Sandbox Code Playgroud)

参见jsFiddle