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"));

只有前两个匹配,这是(我认为)你想要的。

于 2012-11-14T22:44:49.823 回答
2

如果您在捕获组之前想要空格或什么都没有( +|^),那就是:

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

从技术上讲,我匹配space 或 nothing,但效果是一样的。

于 2012-11-14T22:45:35.813 回答