是否可以生成与正则表达式字符串匹配的字符串?
Posted
技术标签:
【中文标题】是否可以生成与正则表达式字符串匹配的字符串?【英文标题】:Is it possible to generate strings that match a regular expression string? 【发布时间】:2012-06-06 23:33:11 【问题描述】:是否可以显示匹配正则表达式的字符串?
例子:
取表达式/^AD\d3/
并显示AD999
我正在做的是验证一个非常简单的字符串,或者包含所有数字,可能包含几个字符,也可能包含一个“-”。我正在根据所有使用邮政编码的国家/地区的数据库验证表单提交上的邮政编码。
我可以用 javascript 或 php 来执行它,如果这有什么不同的话。
【问题讨论】:
一般来说,有很多字符串匹配一个正则表达式——至少,对于任何有用的正则表达式。您想使用什么标准来决定应该显示多个匹配字符串中的哪一个? 您怎么会知道来自/^AD\d3/
的是 AD999 而不是 AD001?
他只是想显示一个有效输入的例子。
我看不出 -1 的原因。
你会为\d5,8([c-fF-M]+.)?
插入什么?您想要显示的内容几乎肯定取决于比正则表达式本身更大的上下文。
【参考方案1】:
没有。这种功能不可用。
您可以尝试自己实现它,但我认为这不是您的解决方案。只需正常编写消息即可。并非一切都必须始终是动态的。
我喜欢你的思维方式。
【讨论】:
我只是想如果我可以反转它,它将节省数据库中的另一个字段。 为什么数据库中有另一个字段有问题? 没问题,当我建立的数据库包含世界上每个使用邮政编码的国家/地区时,工作量很大。 @Philip 您生成的信息越多,在需要重构时需要更改的内容就越少。【参考方案2】:从您的附加 cmets 中,我对您的问题有了更好的理解。
由于您的数据只是邮政编码,我建议可以朝另一个方向工作,将图片存储在数据库中,然后自动生成正则表达式。
例如,英国邮政编码看起来像AA?99? 9AA | AA?9A 9AA
,很容易转换为正则表达式(使用正则表达式!)。
【讨论】:
或者更一般地说,有一种特定领域的语言,您可以从中生成示例和正则表达式。顺便说一句,SAN 1TA 是一个有效的英国邮政编码,用于儿童向圣诞老人寄信,还有一些其他奇怪的例子。您是否愿意接受表格上的内容是另一个问题。 小心 - 它是SAN TA1
。你不希望那些信误入歧途!【参考方案3】:
有可能。 developers of PEX figured it out。
别抱太大希望,我不知道任何 javascript 实现。
【讨论】:
链接已损坏,但请参阅下面的 Pepijn 答案以获得非常好的 JavaScript 实现【参考方案4】:现在有一个用于 javascript 的:http://fent.github.io/randexp.js/。
【讨论】:
这非常有效,在我看来应该是最佳答案,非常感谢以上是关于是否可以生成与正则表达式字符串匹配的字符串?的主要内容,如果未能解决你的问题,请参考以下文章