对于正则术士来说,这可能很容易,但是我似乎无法用我有限的知识找到一种方法。
我需要一个正则表达式来检查一个字母数字字符串是否包含一个小于数字的数字(在我的例子中是16539065)。
例如,应匹配以下内容:
alpha16000000beta foo300bar
以下各点不应相匹配:
foo16539066bar
请帮帮忙。
编辑:我知道这是低效的,但是我是在cPanel帐户级别的过滤器中这样做的,它只接受regex。除非我想出一种方法来触发脚本,否则这肯定需要用regex来完成。:(
发布于 2016-03-13 20:21:27
坏的因果报应可能会杀了我,但这是一个解决你的案例的有效方法(字母然后是数字,然后是字母)。它将不适用于例如ab12cd34de。没有一种方法可以对任何东西进行短编码,只有很长的一段路。我用负前瞻来检查,这个数字不大于或等于16539065。
^\D*(?!0*(?:\d{9}|2\d{7}|1[7-9]\d{6}|16[6-9]\d{5}|165[4-9]\d{4}|16539[1-9]\d{2}|165390[7-9]\d|1653906[5-9]))\d+\D*$它检查通用格式^\D*\d+\D*$,然后将16539065向下滚到它的部件。
这里有一个小演示要播放:https://regex101.com/r/aV6yQ9/1
发布于 2016-03-13 19:53:08
这种操作的最佳选择是使用捕获组获取数字,然后使用任何语言进行比较。如果您一定要使用regex来完成这个任务,那么它将是非常低效率的。要做到这一点,您需要结合许多类似的表达式:
一旦有了所有这些表达式,就可以使用“或”运算符组合它们。请记住,以这种方式使用正则表达式被认为是错误的做法,并且会造成难以阅读的代码。
https://stackoverflow.com/questions/35974759
复制相似问题