我如何检查一个字符串是否会使用JS使一个有效的html ID

How do I check if a string would make a valid html ID using JS?

本文关键字:一个 JS 有效 ID html 何检查 字符串 是否 检查      更新时间:2023-09-26

我有一个变量word,它填充了各种字符串,然后成为新元素的id。我想检查并确保字符串会使一个有效的html ID。我在这个回答中遇到了正则表达式,但我不知道如何把它放在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);
    }

test()调用的结果已经足够:

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

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

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

我使用这个小片段:

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

如果你的字符串不是一个有效的id,它将返回null,或者它将返回没有哈希的id(它将允许你直接做一个document.getElementById())。

来源:sizzlejs。