1

我有一个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);
    }
4

3 回答 3

2

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

if (/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(word)) {
    return findIt(i);
} else {
    // Does not match
}
于 2013-06-14T07:51:36.410 回答
1

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

function isValidId(s) {
  return /^[^\s]+$/.test(s);
}
于 2013-06-14T08:03:47.090 回答
0

我使用这个小片段:

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

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

资料来源:sizzlejs

于 2013-08-09T19:28:46.497 回答