我有一个已知开头和结尾的字符串,但我想只匹配未知中心.
例如,假设你知道你会有一些字符串,上面写着"我今天午餐吃了_______",你只想匹配空白.
这是我尝试过的:
^I had (.*) for lunch today$
哪个匹配整个字符串,以及组,即空白.
因此,当"我今天午餐吃披萨"时,它会产生两场比赛:
"我今天午餐吃披萨"和"披萨"
有没有办法只匹配空白?有没有办法获得"披萨"?或者至少将"披萨"作为第一场比赛?
您构建了一个捕获组;用它。
当您创建一个用括号括起来的正则表达式时,在您的情况下(.*?),您已经创建了一个捕获组。捕获组匹配的任何内容都将与完整匹配一起返回。
String.prototype.match()返回一个数组。它的第一个元素是完全匹配。所有后续元素都是捕获的结果。由于您只有一个捕获组,因此结果为matches[1]。
var sentences = [
"I had pizza for lunch today",
"I had hamburger for lunch today",
"I had coconut for lunch today",
"I had nothing for lunch today"
];
sentences.map(function(sentence) {
console.log(sentence + " -> " + sentence.match(/^I had (.*?) for lunch today$/)[1])
})Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |