簡體   English   中英

使用正則表達式僅檢索7位數的字符串

[英]Using regex to only retrieve string with 7 digits

簡而言之,頁面包含大約10個div,每個div包含字母和數字,我試圖返回所有出現的正好7位數,但前后可以有其他非數字字符。

例如。

“q1234567”應返回1234567

“q1234567q”應返回1234567

“q1234567q1234567q12345678q”應返回1234567和1234567

不應退回“12345678”

更具體地說,整個字符串的示例:

q1234567q
q1234567q
q12345678q
q1234567q123456789q123456q1324567q1234567
1234567
1
12
123
1234
12345
q12345q
q1234
12345q
123

我嘗試通過正則表達式做到這一點,並得到了

/\d{7}(?=\D|$)/g

但是JavaScript並不能很好地適應外觀。如何在不涉及全新庫的情況下解決這個問題?

這個正則表達式應該工作:

/^\D*\d{7}\D*$/

在線演示: http//regex101.com/r/nE5eI6

更新:根據下面編輯的問題和評論,您可以使用此正則表達式:

(?:^|\D)(\d{7})(?=\D|$)

並使用匹配的組#1作為輸出。

演示: http//regex101.com/r/wL4oW1

你可以使用這樣的東西嗎?

var regex = /(?:^|\D)(\d{7})(?!\d)/g;
var s = "q1234567q123456789q123456q1324567q1234567";
var match, matches=[];

while ( (match=regex.exec(s)) !== null ) {
    matches.push(match[1]);
}

alert(matches);

jsfiddle演示

怎么樣: (?<=\\D)[0-9]{7}(?=\\D|$)|^[0-9]{7}(?=\\D|$)

var regex = /(\b|\D)(\d{7})(\b|\D)/g
function get7digits(s) {
    var md, matches=[];
    while( (md=regex.exec(s)) !== null ) matches.push(md[2]);
    return matches;
}

get7digits('q1234567q123456789q123456q1324567q1234567')

[“1234567”,“1324567”]

這個怎么樣:

/(^|\\D)\\d{7}(\\$|\\D)/gm

http://regex101.com/r/iT5cR3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM