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+)/