如何字符串化正则表达式?

uks*_*ksz -2 javascript regex

如果输入是电子邮件,我有以下正则表达式:

/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
Run Code Online (Sandbox Code Playgroud)

我想在 javascript 中对其进行字符串化。我试图使用:

var regex = new RegExp("/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/");
regex.toString();
Run Code Online (Sandbox Code Playgroud)

但这给我带来了错误的结果:

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

有任何想法吗?

Aru*_*hny 6

您可以使用源属性

source 属性返回一个包含正则表达式对象的源文本的字符串,它不包含两侧的两个正斜杠和任何标志。

var regex = /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
snippet.log(regex.source)
Run Code Online (Sandbox Code Playgroud)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 如何从源头重建这个正则表达式? (2认同)