正则表达式匹配非整数?

时间:2011-06-25 00:36:09

标签: regex mod-rewrite

尝试创建一个忽略正确整数(1,5,999等)和正斜杠但匹配其他所有内容的正则表达式。例如,它将匹配以下内容:

  • 测试
  • test1
  • 试验-1

但忽略

  • 1
  • 55
  • 7

这是一个mod重写。

4 个答案:

答案 0 :(得分:4)

我认为

[^-0-9\/]+应该做到这一点。它将匹配任何包含非数字的字符串。

编辑添加减号,也可以在整数中添加,然后包含问题中提到的正斜杠。

答案 1 :(得分:1)

这是一个非常古老的问题,但我注意到当前接受的答案 ([^-0-9\/]) 与中间有破折号/减号 (-) 的数字字符串的任何部分都不匹配或在末尾或纯粹由破折号组成。

因此正则表达式将不会在诸如 12-341234---12- 或 {{1} 之类的字符串中找到匹配项},即使这些显然不是有效的整数,因此应该被捕获。

要将这些包含在正则表达式中,您可以使用以下内容:

-----

这将匹配

  • 包含非数字、非减号字符的字符串的任何部分(当前接受的答案中的正则表达式也是如此)
  • 后跟减号 [^-0-9]+|[0-9]+(?=-)|^-$|-{2,} 的任何数字(使用正向预测,处理除开头以外的任何地方都带有破折号的数字)
  • 任何由一个破折号组成的字符串
  • 具有两个或多个连续破折号的字符串的任何部分

因此这将在任何不是正整数或负整数的字符串中找到匹配项,另见https://regex101.com/r/8zJwCy/1


为了还包括(或更确切地说排除)斜杠,根据 OP 的要求,可以将它们添加到第一个字符组中。

-

请注意,这也不会匹配纯斜线系列([^-0-9\/]+|[0-9]+(?=-)|^-$|-{2,} ///、...)和整数之间的多个斜线(///、{ {1}}、1//21//-2) 可能需要也可能不需要(当前接受的答案行为相同),请参阅 https://regex101.com/r/8zJwCy/3

为了捕捉这些,添加另外两个匹配斜线系列的可选组,类似于处理破折号的最后两个组。或者,如果您希望单个斜杠 (//1) 有效,只需添加一组与最后一组类似的组,请参阅 https://regex101.com/r/8zJwCy/4

2//

答案 2 :(得分:0)

这会逐行匹配 - 这是你需要的吗?     ^[0-9\/]*$

答案 3 :(得分:0)

这应该可以胜任!

^[0-9\/]+$