JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
Regular expressions in JavaScript: match multiple substrings at the beginning of a string?
我想构建一个JavaScript正则表达式来匹配所有以"ad"或"ae"开头的单词,或者所有包含"-ad"和"-ae"的单词。
这是我尝试过的:
var regex_string = "^[ad|ae]|-[ad|ae]";
var re = RegExp(regex_string, "i");
var matches = _.filter(data, function(r) {
if (re.test(r)) {
return true;
}
});
但是,这匹配所有以"a"、"d"或"e"开头的单词。
如何修改正则表达式以仅匹配这些字符串?
JSFiddle here: http://jsfiddle.net/xGgan/1/
因为[]
匹配里面的任何字母 所以它说"匹配 a 或 d 或 |或 a 或 e"。您需要将捕获组与 or 一起使用。
尝试
var regex_string = "(^(ad|ae)|-(ad|ae))";
[ ... ]
表示一个角色类,无论位置如何,里面的任何内容都将匹配。此外,[ae]
仅匹配一个字符,即a
或e
。
对于您的工作,直接翻译它会得到:
(?:^(?:ad|ae)|-(?:ad|ae))
您可以在组中使用|
(( ... )
用于捕获组,(?: ... )
用于非捕获组;如果您不打算保存捕获以供以后使用,则后者更可取,因为它们提高了正则表达式速度和内存)。
但这可以稍微优化一下:
(?:^|-)a[ed]
应该匹配一样好。
这里是我对"-ae 和 -ad"的解释:
/^(?:ad|ae)|-ad.*-ae|-ae.*-ad/
相关文章:
- 对id以某个字符串开头的元素进行计数
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 如何删除字符串开头和结尾的换行符
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 我可以选择所有属性名称(而不是值)以某个字符串开头的元素吗
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在jquery中选择id以字符串开头的元素
- 获取DOM中属性名称以某个字符串开头的所有HTML元素
- 如何匹配字符串开头的数字
- 为所有以特定字符串开头的变量赋值
- 正则表达式,用于匹配字符串开头的协议相对 URL
- 在 JavaScript 中按字符串开头或单个字符进行匹配
- REGEX 检查字符串开头或结尾的字符
- 如何在 javascript 中检查字符串开头是否有空格
- 正则表达式匹配:字符串开头不包含字符
- 如何从字符串开头获得与正则表达式的匹配项
- 如何检查 JavaScript 对象是否具有以特定字符串开头的属性名称
- Web 视图中字符串开头和结尾的像素偏移量 (x,y)
- JS获取以字符串开头键的对象值