Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 帮助用户编写正则表达式_Regex - Fatal编程技术网

Regex 帮助用户编写正则表达式

Regex 帮助用户编写正则表达式,regex,Regex,我正在从事一个项目,其中有一些文本字段的格式规则 用户可以编辑这些规则。目前,规则是正则表达式。用户认为正则表达式非常吓人,希望用一种更简单、更友好的方式编写正则表达式 我想到了一些简单的翻译工具。。。用户可以在其中输入#作为数字。。。X代表一封信等。。但我知道总有一天他们需要的不仅仅是字母和数字 我想知道是否存在一个简单的翻译工具,或者是否有更好的方法来做到这一点 感谢您的阅读,欢迎您提出所有建议和想法。创建您所建议的工具应该相当简单。只需将占位符展开为相应的正则表达式值: var input

我正在从事一个项目,其中有一些文本字段的格式规则

用户可以编辑这些规则。目前,规则是正则表达式。用户认为正则表达式非常吓人,希望用一种更简单、更友好的方式编写正则表达式

我想到了一些简单的翻译工具。。。用户可以在其中输入#作为数字。。。X代表一封信等。。但我知道总有一天他们需要的不仅仅是字母和数字

我想知道是否存在一个简单的翻译工具,或者是否有更好的方法来做到这一点


感谢您的阅读,欢迎您提出所有建议和想法。

创建您所建议的工具应该相当简单。只需将占位符展开为相应的正则表达式值:

var input= "XX##*"
var regex = input.replace('#', '[0-9]')
regex = regex.replace('X', '[a-zA-Z]')
regex = regex.replace('*', '.*')
# etc
当然,您必须定义您的占位符以及您希望向用户提供的任何其他选项。您还可以通过使用
/
(或其他标识符)围绕输入来获得创造性,并允许高级用户直接输入正则表达式

当然,这完全是一个虚构的语言来演示解决方案。。。如果你能找到一种编译它的方法,我将非常感兴趣。:)

  • 将字符串拆分为单个字符并应用

    • 将每个
      X
      替换为
      [a-zA-Z]

    • 将每个
      #
      替换为
      \d

    • 将每个
      ^
      替换为
      \^

    • 所有其他字符替换为
      [*]
      ,其中
      *
      是要替换的字符

  • 将所有模式连接到一个最终的正则表达式模式中

  • 如果要将正则表达式模式应用于整个字符串,请在开头添加
    ^
    ,在结尾添加
    $


  • 可能他们是如何定义的?他们是把它们写在文本文件中,还是通过网络表单?如果你使用了一个表单,你可以使用按钮,上面写着“数字”之类的东西(而不是在DSL的顶部写DSL),他们通过表单来写谢谢你的评论,我会用我完成的回答更新谢谢你的评论我会以某种方式使用它。
    var input= '/\d\d\w\w.*/'
    var regex = undefined;
    if (input.matches('^/(.*)/$')) {
        regex = $1  (group 1 from regex)
    } else {
      regex = input.replace('#', '[0-9]')
      regex = regex.replace('X', '[a-zA-Z]')
      regex = regex.replace('*', '.*')
    }