我正在尝试编写一个正则表达式,该表达式返回一个介于``和包含点的字符串。例如:我想获取位于字符串“`”
之间的字符串和“`”,并包含一个点(。)
My names is `James.Bond`.
将返回
James.Bond
我的名字是James Bond
。
是错误的,因为它不包含点(。)
但是我对regex不熟悉。
我能够执行此操作
/`([^.)]+`)/
这将返回
`James Bond`
您可以使用
/`([^`.]*\.[^`.]*)`/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]));
您可以使用:
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));
此正则表达式有效:
/`\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)