我需要一个JS正则表达式来仅根据已知的第一个和最后一个子字符串以及空格数来匹配字符串-而且我不在乎第一个和最后一个子字符串之间的长度或性质(其他而不是确切的空格数)。
以下是可能的起始字符串(从中可以获取第一个和最后一个子字符串以及空格数):
cat apple dog mouse
由此,我现在知道字符串以cat
,结束mouse
并精确地包含3个空格(它们可以在两端之间的任何位置,但它们将不是连续的)。
我需要匹配的字符串可能是:
catfish mouse mouse dormouse mouse mouse
或者 cat mouse mouse mouse mouse mouse
因此,在第一种情况下catfish mouse mouse dormouse
,在第二种情况下,我需要匹配的是cat mouse mouse mouse
-在这两种情况下,一个字符串都以cat
,开头mouse
并恰好包含3个空格。此刻,我的所有尝试都与上面的整个示例字符串匹配,而不仅仅是从cat
第三个匹配mouse
。这是我最近的失败:
cat(?:(?![\s]{4,}).*)mouse
我非常怀疑我对此有误解-谢谢您的任何建议。
您可以编写正则表达式而无需先做。
例子
\bcat(?:[^\s]*\s){3}[^\s]*mouse\b
\b
匹配单词边界。这样可以确保它不匹配以结尾的字符串mousexyz
cat
cat
在字符串开头匹配(?:[^\s]*\s){3}
[^\s]*
匹配除空格以外的任何内容。因此,该单词与单个单词匹配,而以下单词与单词后面\s
的空格匹配。{3}
确保带有空格的单个单词重复3次。[^\s]*
在3个空格之后匹配除空格以外的任何字符。mouse
匹配字符串末尾的鼠标为什么不起作用cat(?:(?![\s]{4,}).*)mouse
?`
(?![\s]{4,})
否定的前瞻性将检查是否cat
不立即跟随4个空格。这是对的,因此它与所有输入字符串匹配。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句