否定集后正则表达式匹配单词

时间:2017-05-17 17:09:16

标签: javascript regex

我目前正在尝试将以下案例与Regex相匹配。

当前正则表达式

\.\/[^/]\satoms\s\/[^/]+\/index\.js

// Should match
./atoms/someComponent/index.js 
./molecules/someComponent/index.js
./organisms/someComponent/index.js

// Should not match
./atomsdsd/someComponent/index.js
./atosdfms/someComponent/index.js
./atomssss/someComponent/index.js

然而,没有一个案例是匹配的,我做错了什么?

3 个答案:

答案 0 :(得分:2)

希望这会帮助你。你添加了一些额外的字符,让你的正则表达式失败。

正则表达式: \.\/(atoms|molecules|organisms)\/[^\/]+\/index\.js

  

1。 \.\/这将匹配./

     

2。 (atoms|molecules|organisms)这将匹配atomsmoleculesorganisms

     

3。 \/[^\/]+\/这将匹配/,然后直到/

     

4. index\.js这将匹配index.js

Regex demo

答案 1 :(得分:1)

为什么不只是这个simpler pattern

\.\/(atoms|molecules|organisms)\/.*?index\.js

答案 2 :(得分:0)

尝试以下方法:

\.\/(atoms|molecules|organisms)\/[a-zA-Z]*\/index\.js

正斜杠(和其他特殊字符)应使用反斜杠\进行转义。

  1. \.\/(atoms|molecules|organisms)\/匹配' .atoms /'或.moleculesorganisms 严格。如果没有括号,它将匹配部分字符串。 |是一个交替运算符,它匹配左侧的所有内容或右侧的所有内容。
  2. 在任何情况下,
  3. [a-zA-Z]*都会匹配任意长度的字符串和字符。 a-z占小写,A-Z占大写。 *表示一个或多个字符。根据{{​​1}}中可能包含的字符,您可能需要使用someCompenent来计算数字。
  4. [a-zA-Z\d]*将匹配' /index.js'