I want to match large numbers in my data but sometimes the data includes repeated zeros for emphasis rather than phone numbers. How can I identify numbers at least nine digits long and not include any numbers with repeated zeros (say, at least 5)? For example:
match: call me at 19083910893
don't match: this x1000000000
I tried [0-9]+(?!0+)
but this isn't what I need because the negative lookahead doesn't unmatch results found with the [0-9]+
. Somehow, (\d)(?!0+)\d+
works in tests but I don't really understand why.
You could use
(?<!\d)(?!\d*0{5})\d{9,}
Explanation
(?<!\d)
Negative lookbehind, assert not a digit directly to the left (?!\d*0{5})
Assert that at the right are not 5 zeroes \d{9,}
Match 9 or more digits
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.