![](/img/trans.png)
[英]RegEx to extract the first 6 to 10 digit number, excluding 8 digit numbers
[英]Regex for the first 8-digit number in a block of text excluding numbers with > 8 digits
我需要檢查電子郵件中的某個文本塊,以找到正好8位數長的數字,並且只返回第一個匹配項。
這是我的測試用例:
Test123456789-應該失敗,因為9位數
Test23456789Test-通過
Test23456789測試-通過
13456780測試-通過
Test0123456-因7位數字而失敗
電子郵件中的其他文字:我已附上您要求的信息。 如果你有任何問題,請告訴我們。 -電子郵件中的多余文本無關緊要。
我試過了:
.*(\\d{8}).*
-匹配多個
.*?(\\d{8}).*
-僅匹配一次,但也匹配9位數字
.*(?<!\\d)\\d{8}(?!\\d).*
-我在另一個答案中找到了,但是它返回了電子郵件中的所有文本,我只想要8位數字。
感謝您的指導!
您可以使用以下正則表達式:
(?!.*\d{9})\d{8}
首先使用9位數字的negative look ahead
前瞻。 然后,它匹配8 digits
。
如果是7位或9位數字,則此操作將失敗。
您可以使用以下命令找到第一個匹配項:
^[\\s\\S]+?(?<!\\d)(\\d{8})(?!\\d)
這將匹配:
^
字符串的開始 [\\s\\S]+?
匹配任何字符非貪婪 (?<!\\d)
否定向后檢查左側是否不是數字 (\\d{8})
分組捕獲8位數字 (?!\\d)
負向檢查以檢查右邊的數字不是數字 或者啟用使點與您的工具或語言中的換行符匹配,或在正則表達式前加上(?s)
並替換[\\s\\S]+?
與.+?
您的值在第一個捕獲組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.