Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中生成与正则表达式匹配的所有可能字符串_Javascript_Regex_String_Generator - Fatal编程技术网

如何在JavaScript中生成与正则表达式匹配的所有可能字符串

如何在JavaScript中生成与正则表达式匹配的所有可能字符串,javascript,regex,string,generator,Javascript,Regex,String,Generator,我知道我们可以将JavaScript中的字符串与正则表达式对象匹配,以检查字符串是否与正则表达式匹配 我的问题是,给定一个正则表达式,是否可以生成与该正则表达式匹配的所有可能字符串/单词 如果语言是无限的,也许可以限制单词。你最好的选择是为正则表达式创建JavaScript单元测试,并在你有时间/意愿的情况下尽可能多地使用crud 就我个人而言,我喜欢+ 如果正则表达式包含一个量词,如+,*或{n,}(应用于非空元素),字符串的数量是无限的。@casimirithippolyte,从技术上讲,字

我知道我们可以将JavaScript中的字符串与正则表达式对象匹配,以检查字符串是否与正则表达式匹配

我的问题是,给定一个正则表达式,是否可以生成与该正则表达式匹配的所有可能字符串/单词


如果语言是无限的,也许可以限制单词。

你最好的选择是为正则表达式创建JavaScript单元测试,并在你有时间/意愿的情况下尽可能多地使用crud

就我个人而言,我喜欢+


如果正则表达式包含一个量词,如
+
*
{n,}
(应用于非空元素),字符串的数量是无限的。@casimirithippolyte,从技术上讲,字符串的数量理论上是无限的,但实际上是受内存和实现的限制。也就是说,使用现代技术进行计算仍然是一个难以管理的数字,可能会超过宇宙的寿命。@ZZZBOV:我不能评论大危机理论或计算机未来的计算能力,我想说的是,如果不能享受结果,那将是一种耻辱。你所能做的就是标记模式的不同元素,识别什么是有限的,什么不是有限的。如果所有元素都是有限的,则可以生成字符串列表,如果不是,则只能生成包含模式部分(或其他表示)的字符串列表,以指示和描述这些无限部分。但是在这种情况下,与正则表达式的表达能力相比,这样做有什么意义呢?一个编写良好的正则表达式应该足够清楚地表达模式,而不需要生成示例(e.x.
/[\f\n\r\t]/
=CSS空格)。如果正则表达式很难阅读,那么就很难理解这意味着它很容易隐藏bug。这很好,但理想情况下,我希望它列出哪些电子邮件地址没有通过正则表达式。@YvonaBurrow:编写测试,您希望电子邮件地址与正则表达式不匹配。你也需要阴性测试。谢谢,是的,我正在使用这组电子邮件地址进行测试
all("valid email addresses return true",
    [
        "foo@bar.com",
        "foo+1@example.foo.xyz",
        ...
    ],
    function(value) {
        expect(regex.test(value)).toBe(true);
    }
);