我花了一天时间尝试使用正则表达式来匹配单词唯一的单词。它没有用,我无法弄清楚我做错了什么。
我需要的东西只能匹配" ST"的唯一实例,例如:
但是失败了:
我认为这个先行可行,但没有这样的运气:
(\bST\b)(?!(\bST\b))
我错过了什么?
答案 0 :(得分:1)
您可以使用RegExp
/\bST\b/g
和.match()
,查看匹配字符串的.length
const matches = (str, re = /\bST\b/g, match = str.match(re)) =>
!!match && match.length === 1;
const arr = [
"1 MARY ST WASHINGTON"
, "1 ST MARY ST WASHINGTON"
, "1 ST MARY ST MT ST HELENS"
, "1 MARY RD WEST WASHINGTON"
, "1 MARY RD WASHINGTON"
];
console.log(arr.map(s => matches(s)));

答案 1 :(得分:1)
您可以使用以下模式:
^(?!(.*\bST\b){2,}).*\bST\b
这会立即产生负面预测,它会检查是否有2次或更多次\bST\b
次出现。如果没有,则在模式中移动并检查是否至少有一个。