1

次の正規表現があります

var catalogueHrefRegex = /\/automobiles\/(cr)|(ts$)|(zs)|(ax)|(wx)$/;

たとえば、これをURLに対してテストしています

var href = "xxx/compare/ax?model=xxx";

次のコードを実行します

catalogueHrefRegex.test(href)

false を返すと思っていましたが、true を返します。私は次のようなURLを試みています

/automobiles/cr/...
/automobiles/ts/...
/automobiles/zs/...
/automobiles/ax/...
/automobiles/wx/...

'automobiles/tsx' と一致させたくないので、ts の最後に $ があります。次のことを試しましたが、期待どおりに動作しませんでした

/\/automobiles\/((cr)|(ts$)|(zs)|(ax)|(wx))$/
/\/automobiles\/*(cr)|(ts$)|(zs)|(ax)|(wx)*$/

私は正規表現が苦手なので、私の試みはグーグル検索の後でした。「cr」を試してみると期待どおりに動作しますが、cr/ts/zs/ax/wx をグループ化する方法がわかりません。自動車/ crまたはtsまたは...と一致すると言います

http://jsfiddle.net/WdXXx/

希望する結果の正しい正規表現は何ですか? お時間をいただきありがとうございます

4

1 に答える 1

1

したがって、いくつかの問題があります。まず、代替はそれを含むグループ全体に適用されます。次に、$入力文字列の末尾 (または複数行モードの行の末尾) に一致します。したがって、最初の正規表現は次のとおりです。

/\/automobiles\/(cr)|(ts$)|(zs)|(ax)|(wx)$/ 

/automobiles/crは、リテラルまたはリテラルの後に文字列の末尾が続くか、リテラルまたはリテラルまたはリテラルのts後に文字列の末尾が続くものと一致します。zsaxwx

代わりに、次のようなパターンが必要だと思います。

/\/automobiles\/(cr|ts|zs|ax|wx)\//

これは、リテラルの後にリテラル、、、、、またはリテラル/automobiles/が続くものと一致します。crtszsaxwx/

$あなたが使用した例では/...、最後の/.

ここでテストできます。

于 2013-08-26T16:34:58.207 に答える