1

wordさまざまな文字列を入力し、新しい要素の ID になる変数があります。文字列が有効なhtml IDになることを確認したいと思います。this: answerで正規表現に出くわしましたが、 if else ステートメントに入れる方法がわかりません。これは私が試したものです:

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

以下の解決策をいくつか試してみましたが、うまくいきましたが、完全ではありませんでした。空白または引用符のいずれかが原因だと思います。私は本質的に完全なランダム文字から ID を作成しているので、引用符や空白のない英数字の文字列のみを許可する正規表現が必要です。以下は、現在かなりうまく機能している2つの組み合わせですが、より良い答えがあるはずです.

 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 属性値に対する唯一の制限は、少なくとも 1 つの文字を含み、空白を含まないことです。そのため、次のようにする必要があります。

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

私はこの小さなスニペットを使用します:

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

null文字列が有効なIDでない場合、またはハッシュなしでIDを返す場合に返されます(直接実行できますdocument.getElementById())。

ソース: sizzlejs .

于 2013-08-09T19:28:46.497 に答える