一个正则表达式匹配一个9位数字,如果'&'不会立即跟随

时间:2018-04-30 19:58:17

标签: regex

我需要一个正则表达式匹配一个9位数字但不匹配如果数字紧跟一个&amp ;.例如:

randomText123456789RandomText将返回123456789 但是randomText123456789&RandomText不会返回任何内容

3 个答案:

答案 0 :(得分:1)

假设您需要Javascript样式的正则表达式,那么您需要的是/\d{9}(?!&)/ 如果您需要9并且需要确保它不超过9,您也可以/(^|\D)\d{9}(?!&)/

第二个检查它是字符串的开头还是非数字,然后检查确切的9位数,如果有&数字,则拒绝接受。以下 - 字符串的结尾和除&之外的任何内容将被视为有效。

答案 1 :(得分:1)

您可以将正则表达式与negative lookahead

一起使用
\d{9}(?!&)

RegEx Demo

(?!&)断言下一个字符不是&

答案 2 :(得分:0)

[0-9]{9}[^&]*$

e.g:

echo 'randomText123456789' | grep -E '[0-9]{9}[^&]*$'
randomText123456789

echo 'randomText123456789RandomText' | grep -E '[0-9]{9}[^&]*$'
randomText123456789RandomText

echo 'randomText123456789&RandomText' | grep -E '[0-9]{9}[^&]*$'

(也就是说,第三个命令不产生输出。)