首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex -文本匹配

Regex -文本匹配
EN

Stack Overflow用户
提问于 2016-01-08 21:44:20
回答 2查看 140关注 0票数 2

我需要一个正则表达式,它将与字符串S匹配以下条件:

代码语言:javascript
复制
S must be of length: 20
1st character: lowercase letter.
2nd character: word character.
3rd character: whitespace character.
4th character: non word character.
5th character: digit.
6th character: non digit.
7th character: uppercase letter.
8th character: letter (either lowercase or uppercase).
9th character: vowel (a, e, i , o , u, A, E, I, O or U).
10th character: non whitespace character.
11th character: should be same as 1st character.
12th character: should be same as 2nd character.
13th character: should be same as 3rd character.
14th character: should be same as 4th character.
15th character: should be same as 5th character.
16th character: should be same as 6th character.
17th character: should be same as 7th character.
18th character: should be same as 8th character.
19th character: should be same as 9th character.
20th character: should be same as 10th character.

我写了以下文章,但它不起作用。

代码语言:javascript
复制
^([a-z])(\w)(\s)(\W)(\d)([A-Z])([a-zA-Z])([a,e,i,o,u,A,E,I,O,U])(\S)(\D)\1\2\3\4\5\6\7\8\9\10$

样本输入:

代码语言:javascript
复制
ab #1?AZa$ab #1?AZa$

有人能解释一下这是怎么回事吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-08 21:48:51

您可以使用这个regex:

代码语言:javascript
复制
^([a-z]\w\s\W\d\D[A-Z][a-zA-Z][aeiouAEIOU]\S)\1$

RegEx演示

  1. 如问题所示,第六位是非数字,但您的reges有[A-Z]
  2. 没有必要在字符类中为多个值设置逗号。
  3. 没有必要分别捕获10个反向引用的10个值,因为char 1-10与char 11-20相同。我们只需捕获前10个字符在一个组,并使用它作为一个单一的反向引用在最后。
票数 3
EN

Stack Overflow用户

发布于 2016-01-08 22:40:44

你可能想试试这样的方法:

代码语言:javascript
复制
^([a-z])(\w)(\s)(\W)(\d)(\D)([A-Z])([a-zA-Z])([aeiouAEIOU])(\S)\1\2\3\4\5\6\7\8\9\10$

要捕获单个的类/字符组。但是,如果不需要捕获单个字符,则可以考虑上面发布的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34686638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档