【问题标题】:Is it possible to generate strings that match a regular expression string?是否可以生成与正则表达式字符串匹配的字符串?
【发布时间】:2012-06-06 23:33:11
【问题描述】:

是否可以显示匹配正则表达式的字符串?

例子:

取表达式/^AD\d{3}/ 并显示AD999

我正在做的是验证一个非常简单的字符串,或者包含所有数字,可能包含几个字符,也可能包含一个“-”。我正在根据所有使用邮政编码的国家/地区的数据库验证表单提交上的邮政编码。

我可以用 Javascript 或 PHP 来执行它,如果这有什么不同的话。

【问题讨论】:

  • 一般来说,有很多字符串匹配一个正则表达式——至少,对于任何有用的正则表达式。您想使用什么标准来决定应该显示多个匹配字符串中的哪一个?
  • 您怎么会知道来自/^AD\d{3}/ 的是 AD999 而不是 AD001?
  • 他只是想显示一个有效输入的例子。
  • 我看不出 -1 的原因。
  • 你会为\d{5,8}([c-fF-M]+.)? 插入什么?您想要显示的内容几乎肯定取决于比正则表达式本身更大的上下文。

标签: php javascript jquery regex


【解决方案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/

【讨论】:

  • 这非常有效,在我看来应该是最佳答案,非常感谢
猜你喜欢
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多