7

以下の例では、出力は true です。それとcookieそれも一致cookie14214します Cookie が string にあるためだと思いますcookie14214。のみを取得するためにこの試合を磨くにはどうすればよいcookieですか?

var patt1=new RegExp(/(biscuit|cookie)/i);
document.write(patt1.test("cookie14214"));

これが最善の解決策ですか?

var patt1=new RegExp(/(^biscuit$|^cookie$)/i);
4

2 に答える 2

6

答えは、単語を囲む文字の許容範囲によって異なりますcookie。単語が 1 行だけで厳密に表示される場合は、次のようになります。

var patt1=new RegExp(/^(biscuit|cookie)$/i);

.記号 (スペース、 、 など)を許可したいが、,英数字の値は許可したくない場合は、次のようにしてみてください。

var patt1=new RegExp(/(?:^|[^\w])(biscuit|cookie)(?:[^\w]|$)/i);

2番目の正規表現、説明:

(?:                 # non-matching group
    ^               # beginning-of-string
    | [^\w]         # OR, non-alphanumeric characters
)

(biscuit|cookie)    # match desired text/words

(?:                 # non-matching group
    [^\w]           # non-alphanumeric characters
    | $              # OR, end-of-string
)
于 2012-08-22T19:15:58.950 に答える
2

はい、または単語の境界を使用します。これは一致しますが、一致great cookiesしないことに注意してくださいgreatcookies

var patt1=new RegExp(/(\bbiscuit\b|\bcookie\b)/i);

正確な文字列を一致させたい場合はcookie、正規表現も必要ありません。基本的にはと同じである==ため、を使用するだけです。/^cookie$/i.test(s)s.toLowerCase() == "cookie"

于 2012-08-22T19:14:38.800 に答える