我正在尝试创建一个方法,该方法将查看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。
另一个问题:结果必须至少适度随机。也就是说,结果应该有一些变化,增加了另一个复杂程度。
如何以编程方式生成与正则表达式匹配的字符串? (语言不可知,概念很好)。