最多包含空格的字母数字字符串的正则表达式

铁硝龙

我需要一个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

我非常怀疑我对此有误解-谢谢您的任何建议。

nu11p01n73R

您可以编写正则表达式而无需先做。

例子

\bcat(?:[^\s]*\s){3}[^\s]*mouse\b

正则表达式演示


它能做什么?

  • \b匹配单词边界。这样可以确保它不匹配以结尾的字符串mousexyz
  • catcat在字符串开头匹配
  • (?:[^\s]*\s){3}
    • [^\s]*匹配除空格以外的任何内容。因此,该单词与单个单词匹配,而以下单词与单词后面\s的空格匹配。
    • {3}确保带有空格单个单词重复3次。
  • [^\s]* 在3个空格之后匹配除空格以外的任何字符。
  • mouse 匹配字符串末尾的鼠标

为什么不起作用cat(?:(?![\s]{4,}).*)mouse`

  • (?![\s]{4,})否定的前瞻性将检查是否cat立即跟随4个空格。这是对的,因此它与所有输入字符串匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式验证带有可选空格的字母数字字符串

以字母数字字符开头并且可以在字符串中间包含特殊字符的正则表达式(Java)

包含至少一位数字的字母数字字符串的正则表达式

正则表达式匹配无法在python中选择带空格的字母数字字符串

正则表达式,用于包含零或一个撇号的字母数字字符串

正则表达式用于字母数字字符串中的数字计数

10 个字符的字母数字字符串的正则表达式

捕获该字符串的正则表达式包含字母数字、下划线和空格,但以字母开头

用于字母数字字符串的 Django URL 正则表达式

正则表达式仅在 shell 中捕获字母数字字符串

PHP正则表达式检查字母数字字符串

正则表达式检查Ruby中的字母数字字符串

使用正则表达式检测字母数字字符串的范围

带字母数字字符串的Grep正则表达式

C#正则表达式字母数字字符串

正则表达式匹配混合的较低字母数字字符串

正则表达式-拒绝所有字母数字字符串

Java正则表达式匹配字母数字字符串

如何使用正则表达式选择字母数字字符串

正则表达式表达式以检查字母数字字符串不起作用

接受字母数字字符串但拒绝特定字符串(.htaccess)的正则表达式

javascript正则表达式,用于以正斜杠开头,后跟字母数字字符和无空格的字符串

正则表达式用于替换字母数字字符串中间的数字,而不是末尾的数字

正则表达式获取字母数字字符串之间的非字母数字字符串

Perl字母排序,带有字母数字字符串和正则表达式

在正则表达式中,如何将字母数字字符串的模式与之前/之后的空格或标点符号匹配

用于检查字符串是否至少包含3个字母数字字符的最有效的正则表达式

如何使用正则表达式用空格替换非字母数字字符?

正则表达式,用于字母/数字字符,空格和破折号