![](/img/trans.png)
[英]Regex to match exactly 6 digits with any number of spaces between the digits
[英]RegEx to find exactly 4 digits number
我的文字与以下文字相似。 它包含一个4
位数字,其后跟digit-
或whitespace
,后跟.
, ?
, -digit
或whitespace
。
我需要匹配第一段中的所有数字,但不匹配第二段中的所有数字,因为这些数字不符合我的条件。
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中的特殊字符而被转义),问号(出于相同的原因也被转义)或空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.