JavaScript正则表达式来检查搜索的字符串前面是否有空或空格

JavaScript正则表达式来检查搜索的字符串前面是否有空或空格,javascript,regex,Javascript,Regex,我有以下代码: var requestData = {}; var byPattern = /by=(\w+)/; var value = byPattern.exec(stringToSearch); if (value && value.length === 2) requestData.by = value[1]; 这个正则表达式的第一个问题是,如果stringToSearch例如是“standby=foo”,那么它匹配并返回“foo”。我希望它在那里失败。我希

我有以下代码:

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*替换为=(\w+)/

这更好,但是如果
stringToSearch
是例如“city=paris by=foo”,我希望正则表达式匹配。它应该匹配并返回“foo”。这里的情况并非如此:/


有人能帮我修一下正则表达式吗?非常感谢

神奇的单词是
\b

var byPattern = /\bby=(\w+)/;
console.log(byPattern.exec("by=3"));
console.log(byPattern.exec(" by=3"));
console.log(byPattern.exec("standby=3"));
只有前两个匹配,这是(我认为)您想要的。

如果您想要在捕获组之前留空格或不留空格,那将是
(+|^)


从技术上讲,我匹配的是空格或无空格,但效果是一样的。

\bby
也匹配
中的
by
,看起来不错。我不知道正则表达式中的退格。这个魔法是怎么起作用的?它也适用于
city=paris by=3
@Blackbird
\b
是单词边界,而不是退格。@Malvolio谢谢,但正如Jan所写,他的解决方案的优点是前面加“-”Blackbird时与您使用的解决方案不匹配。如果您想拒绝
备用=3
,请选择我的;-)如果您想在一般情况下匹配空白(不仅仅是空格键,还有制表符、换行符和c),请使用
/(\s|^)by=(\w+)/
/( |^)by=(\w+)/