我有一个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这样的资源来可视化整个表达式.
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链接此处 您的表达式说明