如何使用JS检查字符串是否会生成有效的html ID?

时间:2013-06-14 07:49:38

标签: javascript html regex if-statement

我有一个变量word,它填充各​​种字符串,而不是成为新元素的id。我想检查并确保该字符串将生成有效的HTML ID。我在这里遇到了正则表达式:answer,但我不知道如何将它放在if else语句中。这就是我试过的:

if (/[A-Za-z][-A-Za-z0-9_:.]*/.test(word) === false)
    {
    return findIt(i);
    }

我尝试了下面的几个解决方案,但确实有效,但并不完全。我相信要么是因为空格或引号。我基本上是用完整的随机字符创建一个ID所以我想要正则表达式只允许没有引号且没有空格的字母数字字符串。下面是两个目前工作得很好的组合,但必须有一个更好的答案。

 function isValidId(s) {
 return /^[^\s]+$/.test(s);      
 }


    if (isValidId(word)===false){
        console.log('bad '+word);
        return findIt(i);
    }


    else if(/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(word) === false)
    {
        console.log(word+" had junk");
        return findIt(i);
    }

3 个答案:

答案 0 :(得分:1)

test()来电的结果已足够:

if (/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(word)) {
    return findIt(i);
} else {
    // Does not match
}

答案 1 :(得分:1)

在HTML5中,对ID属性值的唯一限制是它至少包含一个字符且不包含任何空格,因此以下内容应该完成这项工作:

function isValidId(s) {
  return /^[^\s]+$/.test(s);
}

答案 2 :(得分:0)

我使用这个小片段:

function (selector) {
    return /^(?:#([\w-]+))$/.exec(selector)[1];
}

如果您的字符串不是有效ID,它将返回null,否则它将返回没有哈希值的id(它将允许您直接执行document.getElementById())。

来源:sizzlejs