Javascript 生成与正则表达式匹配的随机字符串的算法

Javascript 生成与正则表达式匹配的随机字符串的算法,javascript,regex,language-agnostic,computer-science,theory,Javascript,Regex,Language Agnostic,Computer Science,Theory,我正在尝试创建一个方法,该方法将查看一个模式对象,并为该字段生成一个可以接受的值。这里有一个我正试图匹配的问题来了 phoneNumber: { type: String, label: "Phone Number", RegExp: /^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$/ } 这将接受与美式电话号码匹配的字符串,例如(111)-111-1111 对于一个解决方案,我认为可以递归地构建一个字符串,并根据正则表达式对其进行测试,如

我正在尝试创建一个方法,该方法将查看一个模式对象,并为该字段生成一个可以接受的值。这里有一个我正试图匹配的问题来了

phoneNumber: {
  type: String,
  label: "Phone Number",
  RegExp: /^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$/
}
这将接受与美式电话号码匹配的字符串,例如
(111)-111-1111

对于一个解决方案,我认为可以递归地构建一个字符串,并根据正则表达式对其进行测试,如果匹配则返回,但这会导致堆栈溢出(这不是一个好主意)

我想第一步将类似于DFA

另一个问题:结果必须至少具有一定的随机性。也就是说,结果应该有一些变化,增加了另一个复杂程度


如何以编程方式生成与正则表达式匹配的字符串?(语言不可知,概念上是可以的)。

如果模式是真正规则的,那么用它构建一个NFA,将其转换为DFA,并随机遍历它,直到达到结束状态。如果图案不规则(例如,如果它包含lookaheads),那么我祝你(好运)这些答案包括用于执行此操作的Java库。你可以试着用它们,我想它们应该是普通的。。。虽然发现它是否不规则是一个完全不同的问题,但您可以使用已经创建的库来完成从Google调用的任务。只针对特定的模式?或者一些可以解析JSON模式的东西,注意这里有一个正则表达式,并运行一个函数(测试所有已知字符),直到它有了通过正则表达式的东西。
characters = frozenset([x for x in string.printable])
def generate_matching_string(re_str, regex):
    " generates a string that matches a given regular expression "
    if re.match(re_str, regex):
        return re_str
    letter = re_str[:-1]
    if characters.index(letter) == len(characters):
        re_str += characters[0]
    else:
        re_str[:-1] = characters[characters.index(letter) + 1]
    return generate_matching_string(re_str, regex)