[_ |\_ | \.]的含义是什么?在Javascript regexps?

Jac*_*Sun 4 javascript regex

我有一个js代码:

/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
Run Code Online (Sandbox Code Playgroud)

但是什么意思[_|\_|\.]?(js regexp)

Jam*_*lly 11

如果我们使用像Regexper这样的资源,我们可以将这个正则表达式可视化:

例

由此我们可以得出结论,[_|\_|\.]需要"_","|"之一 要么 ".".我们还可以看到"_"和"|"的双重声明 没必要.正如HamZa评论的那样,可以缩短这一部分[_|.]以达到相同的效果.

事实上,我们甚至可以使用像Regexper这样的资源来可视化整个表达式.


Joe*_*ons 5

它匹配管道字符,下划线或句点.
然而,这是不必要的错综复杂的.它可能更简单.

它可以缩短到这一点
[|_.]


Vin*_*ngh 5

REGEX101是理解正则表达式的非常好的工具

Char class [_|\_|\.] 0 to 1 times [greedy] matches:

[_|\_|\. One of the following characters _|_|.
 [_|\_|\.] requires one of either "_", "|" or "."
Run Code Online (Sandbox Code Playgroud)

请参阅此RegEx101链接此处 您的表达式说明