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

时间:2015-04-02 19:01:38

标签: javascript regex language-agnostic computer-science theory

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

phoneNumber: {
  type: String,
  label: "Phone Number",
  RegExp: /^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$/
}

这将接受与美式电话号码匹配的字符串,例如(111)-111-1111

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

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)

我想第一步将类似于DFA。

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

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

0 个答案:

没有答案