正则表达式如何匹配两个相邻数字不一样?

想匹配链两个字符:MN
M和N都是0-9之间的数字,但是M不等于N,这个正则表达式应该怎么写呢?

阅读 5.6k
4 个回答

js写法/^(\d)(?!\1)\d$/

var reg = /^(\d)(?!\1)\d$/
reg.test('123') // false
reg.test('12') // true
reg.test('11') // false

知识点:

  1. 捕获型括号和反向引用,使用(\d)捕获第一个数字字符,使用反向引用\1引用实际匹配到的第一个字符;
  2. 断言,?!表示后面不能匹配的内容,(?!\1)表示该位置不能匹配前面的字符;
  3. 最后一个\d匹配一个数字;

所以整个正则表示匹配两个数字,且第二个数字不等于第一个数字。

'gxsah22ui12jioj45jjo666'.match(/(\d)(?!\1)\d/g)

image.png

import re
print re.search(r'(\d)\1', '1233')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题