这是我的正则表达式:
/(\(-caramel-\)|\(-vanilla-\)|)/
使用此正则表达式,它将仅检测到第一 字符串,该字符串仅(-caramel-)
如何检测字符串中的所有(-caramel-)和(-vanilla-)?
这是我的示例字符串:
(-caramel-) John Cina (-vanilla-)(-caramel-)2019-05-19 07:31:05(-vanilla-)
我该如何解决这个问题?
答案 0 :(得分:1)
如果我们希望在搜索中输入拼写错误的单词,则可以使用以()
从左到右为界限的字符列表来实现,也许类似于:
\([carmel-]+\)|\([vanila-]+\)
如果不需要此表达式,可以在regex101.com中对其进行修改或更改。
jex.im可视化正则表达式:
$re = '/\([carmel-]+\)|\([vanila-]+\)/m';
$str = '(-caramel-) John Cina (-vanilla-)(-caramel-)2019-05-19 07:31:05(-vannila-)';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
此代码段仅显示表达式是否有效:
const regex = /\([carmel-]+\)|\([vanila-]+\)/gm;
const str = `(-caramel-) John Cina (-vanilla-)(-caramel-)2019-05-19 07:31:05(-vannila-)`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}