0

.*?[a-z]([a-z])([a-z])([a-z]).*?(\s+)(\d+)从一些在线生成器中获得了这种模式,但它不起作用。

我需要允许的模式:

“最少 3 个字符长度的字符串、下一个空格和下一个最少 1 个字符的整数”[abc 1] 或相同但顺序不同的“最少 1 个字符的整数、下一个空格和下一个最少 3 个字符长度的字符串”[3 gtf ]。

谢谢。

4

2 回答 2

1

以下表达式应该符合您的描述:

[a-z]{3,}\s\d+|\d+\s[a-z]{3,}

一些注意事项:

  1. {3,}构造允许您指定给定范围内的重复。一般来说,它是{min,max},但您可以省略 min 或(如这里) max 以获得开放式范围。您还可以通过指定单个数字来指定准确的重复次数,例如{99}.

  2. 该表达式本质上是两个交替切换的完整表达式。正则表达式不允许你说“正是这些事情,以任何顺序”。

  3. 我曾经[a-z]匹配非数字部分中的字符,因为这是您在原始示例中所做的。

于 2015-10-06T13:31:08.447 回答
1

试试这个:

\d+\s\w{3,}|\w{3,}\s\d+

它要么匹配:

  1. 一个或多个数字 ( \d+),后跟一个空格 ( \s),后跟三个或多个单词字符 ( \w{3,})(这是 [a-zA-Z0-9],您可以将此部分替换为 [a-zA-Z]如果你愿意)。
  2. 三个或更多单词字符(这是 [a-zA-Z0-9],如果您愿意,可以将此部分替换为 [a-zA-Z]),后跟一个空格,后跟一个或多个数字.

正则表达式101

于 2015-10-06T12:56:17.393 回答