0

私は次のコードを持っています:

var requestData = {};

var byPattern = /by=(\w+)/;
var value = byPattern.exec(stringToSearch);
if (value && value.length === 2)
    requestData.by = value[1];

この正規表現の最初の問題stringToSearchは、たとえば「standby = foo」の場合、「foo」と一致して返されることでした。そこで失敗してほしい。「by」またはスペースの前に何もない場合にのみ正規表現を一致させたい。

だから私はに置き換えました/^\s*by=(\w+)/

stringToSearchそれは良いことですが、たとえば「city = paris by = foo」の場合、正規表現を一致させたいと思います。一致して「foo」を返す必要があります。ここではそうではありません:/

誰かが正規表現を修正するのを手伝ってもらえますか?どうもありがとう!

4

2 に答える 2

5

魔法の言葉は\b

var byPattern = /\bby=(\w+)/;
console.log(byPattern.exec("by=3"));
console.log(byPattern.exec(" by=3"));
console.log(byPattern.exec("standby=3"));

最初の2つだけが一致します。これは、(私が思うに)あなたが望むものです。

于 2012-11-14T22:44:49.823 に答える
2

キャプチャグループの前にスペースまたは何も必要ない場合は、次のようになり( +|^)ます。

/( |^)by=(\w+)/

技術的には、スペースを一致させるか、何も一致させませんが、効果は同じです。

于 2012-11-14T22:45:35.813 に答える