正则表达式以在包含点的代码之间获取字符串

问题描述 投票:0回答:3

我正在尝试编写一个正则表达式,该表达式返回一个介于``和包含点的字符串。例如:我想获取位于字符串“`”

之间的字符串

和“`”,并包含一个点(。)

My names is `James.Bond`.

将返回

James.Bond

我的名字是James Bond

是错误的,因为它不包含点(。)

但是我对regex不熟悉。

我能够执行此操作

/`([^.)]+`)/ 

这将返回

            `James Bond`
javascript regex
3个回答
1
投票

您可以使用

/`([^`.]*\.[^`.]*)`/g

请参见regex demo

详细信息

  • [`-反引号
  • [([^`.]*\.[^`.]*)-组1:除反引号和点,点之外的0+个字符,以及除反引号和点之外的0+个字符]
  • [`-反引号。

JS演示:

var text = "My name is `James.Bond`. His name is `Jack.Smith`. Her name is `Whats.Her.Name`";
var rx = /`([^`.]*\.[^`.]*)`/g;
var results=[], m;
while(m=rx.exec(text)) {
  results.push(m[1]);
}
console.log(results);

带有.matchAll的代码段:

let text = "My name is `James.Bond`. His name is `Jack.Smith`. Her name is `Whats.Her.Name`";
let matchData = [...text.matchAll(/`([^`.]*\.[^`.]*)`/g)];
console.log(Array.from(matchData, m => m[1]));

0
投票

您可以使用:

let reg = /`[A-Za-z]*[.][A-Za-z]*`/g;

console.log("`James.Bond`".match(reg));
console.log("`James..Bond`".match(reg));
console.log("`James.Bondsdfsdf`".match(reg));
console.log("`.James.Bond`".match(reg));
console.log("`James.Bond.James`".match(reg));

0
投票

此正则表达式有效:

/`\w+\.\w+`/

const re = /`\w+\.\w+`/
const arr = [
  "`James.Bond`",
  "`James Bond`",
  "James.Bond",
  "`Miss.Moneypenny`"
]

const match = arr.map(str => str.match(re) === null ? false : true)
console.log(match)
© www.soinside.com 2019 - 2024. All rights reserved.