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