簡體   English   中英

正則表達式查找確切的4位數字

[英]RegEx to find exactly 4 digits number

我的文字與以下文字相似。 它包含一個4位數字,其后跟digit-whitespace ,后跟. ? -digitwhitespace


我需要匹配第一段中的所有數字,但不匹配第二段中的所有數字,因為這些數字不符合我的條件。

Lorem ipsum 3400-digit, sit amet 5000 consectetur adipisicing elit. Natus, explicabo 6700? Itaque iure ipsum laboriosam, ex nemo delectus iste quia cupiditate digit-9134? Iste nam digit-2456 at voluptate est 8456-digit? At excepturi quis voluptatibus 7500.

Lorem ipsum $5000 dolor sit amet consectetur adipisicing elit. Obcaecati tempora dolorum repellat reiciendis cum soluta deserunt ex voluptatibus, nam illum veniam £5550 quidem aperiam sequi, nostrum sed? Quidem eveniet maiores #5550 autem. https://codepen.io/pen/5000/3454


StackOverflow上已經有一些類似的問題。 我已經瀏覽了其中一些(下面的鏈接),但是我仍然無法做到這一點。 在將此問題標記為重復之前,請檢查您的解決方案是否在第一段中找到所有出現的4位數字,但在第二段中沒有找到所有4位數字。

您可以使用以下模式:

/(?:\bdigit-|\s|^)(\d{4})(?=[.?\s]|-digit\b|$)/gi

參見regex演示 您需要獲取所有第1組值。

細節

  • (?:\\bdigit-|\\s|^) - digit- (作為一個整體),空格或字符串開頭
  • (\\d{4}) -第1組:四位數
  • (?=[.?\\s]|-digit\\b|$) -在右邊,必須有一個. ,空格, ? -digit (整個單詞)或字符串結尾。 注意如果不進行前瞻性操作,則將連續的空格分隔的匹配項忽略掉。

JS演示:

 var strs = ["Lorem ipsum 3400-digit, sit amet 5000 consectetur adipisicing elit. Natus, explicabo 6700? Itaque iure ipsum laboriosam, ex nemo delectus iste quia cupiditate digit-9134? Iste nam digit-2456 at voluptate est 8456-digit? At excepturi quis voluptatibus 7500.", "Lorem ipsum $5000 dolor sit amet consectetur adipisicing elit. Obcaecati tempora dolorum repellat reiciendis cum soluta deserunt ex voluptatibus, nam illum veniam £5550 quidem aperiam sequi, nostrum sed? Quidem eveniet maiores #5550 autem. https://codepen.io/pen/5000/3454" ]; var rx = /(?:\\bdigit-|\\s|^)(\\d{4})(?=[.?\\s]|-digit\\b|$)/gi; for (var s of strs) { var m, res =[]; while(m=rx.exec(s)) { res.push(m[1]); } console.log(res); } 

(\s|digit-)([0-9]{4})(?=-digit|\.|\?|\s)

您需要在查詢的開頭和結尾處有一個OR語句,中間有四個數字。

進一步說明:

  • (?!\\s|digit-) -否定的超前查詢:空格或digit-
  • [0-9]{4} -一個從0到9的數字,正好是四倍
  • (?=-digit|\\.|\\?|\\s) -正向超前: -digit ,a . (因為.是Regex中的特殊字符而被轉義),問號(出於相同的原因也被轉義)或空格。

在Regex101上玩耍

暫無
暫無

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

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