【问题标题】:Regular Expression for IP validation which works in JFLAP适用于 JFLAP 的 IP 验证正则表达式
【发布时间】:2012-05-27 13:28:00
【问题描述】:

我注意到我们程序员在我们的程序中使用的正则表达式用于诸如

之类的任务
  • 电子邮件地址验证
  • IP 验证
  • ...

Automata 中使用的那些正则表达式有点不同(如果我没记错的话)

顺便说一句,我想设计一个 NFA 并最终设计一个用于 IP 验证的 DFA。 我发现了很多正则表达式,例如以下一个:

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

但我无法使用 JFLAP 将其转换为 NFA 或 DFA。

我该怎么办?

【问题讨论】:

    标签: java regex ip automata jflap


    【解决方案1】:

    你不需要直接转换正则表达式,你可以在理解它的目的后重写它。

    有效的 IPv4 地址是由小数点分隔的 4 个数字。每个数字可以从 0 到 255。正则表达式的范围不是很好,所以这就是它看起来像的原因。您发布的正则表达式检查它是否以 2 开头,然后接下来的两个数字不能大于 5,如果以 1 开头,它们可以增加到 9,等等。

    验证正则表达式的最简单方法是使用. 作为分隔符将其拆分,将字符串转换为数字,然后检查它们的范围。

    也就是说,您发布的正则表达式中没有任何不标准的内容。就这么简单,我不知道为什么它对你不起作用。

    【讨论】:

    • 我明白了,但无论如何 JFLAP 无法将此正则表达式转换为 NFA
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多