我想使用 JavaScript 获取双引号之间的文本。我在网上发现了类似的东西title.match(/".*?"/);
但问题是,有时我在双引号之间有文本,但有时没有引号。我的意思是,有时我会收到如下字符串:Neque porro quisquam est qui dolorem ipsum
有时字符串如下:Neque "porro quisquam est" qui dolorem ipsum
。问题是,当我有包含双引号的文本时,我想检索它们之间的文本,但是当它们不存在时,我想要整个文本。
我还观察到string.indexOf("\"")
不起作用,我真的不知道如何解决这个问题。谢谢。
Try:
<script>
let str1 = 'Neque porro quisquam est qui dolorem ipsum';
let str2 = 'Neque "porro quisquam est" qui dolorem ipsum';
let str3 = 'Neque "porro';
let str4 = 'Neque "porro" quisquam "est" qui dolorem ipsum';
function extractFirstText(str){
const matches = str.match(/"(.*?)"/);
return console.log(matches
? matches[1]
: str);
}
function extractAllText(str){
const re = /"(.*?)"/g;
const result = [];
let current;
while (current = re.exec(str)) {
result.push(current.pop());
}
return console.log(result.length > 0
? result
: [str]);
}
// Execution of the functions
extractFirstText(str1);
//Neque porro quisquam est qui dolorem ipsum
extractFirstText(str2);
//porro quisquam est
extractFirstText(str3);
//Neque "porro
extractFirstText(str4);
//porro
extractAllText(str1);
//Array [ "Neque porro quisquam est qui dolorem ipsum" ]
extractAllText(str2);
//Array [ "porro quisquam est" ]
extractAllText(str3);
//Array [ "Neque \"porro" ]
extractAllText(str4);
//Array [ "porro", "est" ]
</script>
EDIT重新设计以考虑到被丢弃的编辑中有关匹配多个子字符串的 @AshishMaity 注释,以及有关原始中断的 @JosephCho 注释,以防存在单引号(在上述情况下为 str3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)