繁体   English   中英

正则表达式匹配由不匹配字符分隔的字符数

[英]Regex match count of characters that are separated by non-matching characters

我想计算字符数,但它们可能被不匹配的字符分开。

这是一个例子。 我想匹配一个包含10个或更多单词字符的文本。 它可能包括空格,但我不想计算空格。

如果匹配:“富酒吧巴兹”(应该算9)
如果匹配:“一个一”(应该算2)
应该匹配:“foo baz bars”(应该算10,匹配整个字符串)

这就是我提出的,但它重要的是:

((?<=\s)*\w(?=\s)*){10}

编辑我不想包含空格来计算。 对不起,我编辑了几次,我没有正确描述。

有什么想法吗?

嘿,我认为这将是一个简单但有效的方法:

( *?[0-9a-zA-Z] *?){10,}

打破正则表达式:

  1. ( *? --------It can start with space(s)
  2. [0-9a-zA-Z] -Followed with the alphanumeric values
  3. *?) ---------It can end with space(s)
  4. {10,} -------Matches this pattern 10 or more times

密钥:当我查看正则表达式的计数时,它适用于该组,即括号“ () ”中的内容,这种情况下,多个空格后跟空格的数字后跟空格仍然计为一个匹配。 希望能帮助到你。 :)

使用每个单词char使用空格的组,并计算组:

^(\s*\w){10,}\s*$

使用JS:删除空格,然后执行\\w检查

'foo baz barz'.replace(/ /g,'').match(/\w{10,}/) != null //true
'foo bar baz'.replace(/ /g,'').match(/\w{10,}/) != null //false

匹配文本中的电话号码:

var test = 'something foo baz barz 07999-777-111 and 01234 567890 01234567890 some more'.match(/((\(?0\d{4}\)?[ -]?\d{3}[ -]?\d{3})|(\(?0\d{3}\)?[ -]?\d{3}[ -]?\d{4})|(\(?0\d{2}\)?[ -]?\d{4}[ -]?\d{4}))([ -]?\#(\d{4}|\d{3}))?/g);
//result: ["07999-777-111", "01234 567890", "01234567890"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM