繁体   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