Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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
Javascript 带有正则表达式的消息内简单表单实现加速器_Javascript_Regex - Fatal编程技术网

Javascript 带有正则表达式的消息内简单表单实现加速器

Javascript 带有正则表达式的消息内简单表单实现加速器,javascript,regex,Javascript,Regex,我正在尝试使用regex和捕获组在普通聊天消息上创建一些简单的数据输入。想法是让用户写很多东西,然后使用scape#,然后命名:任何东西;描述:2;补充:任何3… 此拼图的一些要求和特征: 我知道这些字段的名称 字段的顺序是任意的 字段补码是可选的 我们不能在同一条消息中重复这些字段(我认为这样做太复杂了,我可以在服务器上处理) 我需要能够捕获每个字段的字段和值 必须在客户机上执行regex sintaxe,因为我需要在用户键入时突出显示 提交时不必添加# 对于第一个(用户编写他/她需要的内容,

我正在尝试使用
regex
捕获组
在普通聊天消息上创建一些简单的数据输入。想法是让用户
写很多东西
,然后使用scape
#
,然后
命名:任何东西;描述:2;补充:任何3…

此拼图的一些要求和特征:

  • 我知道这些字段的名称
  • 字段的顺序是任意的
  • 字段补码是可选的
  • 我们不能在同一条消息中重复这些字段(我认为这样做太复杂了,我可以在服务器上处理)
  • 我需要能够捕获每个字段的字段和值
  • 必须在客户机上执行regex sintaxe,因为我需要在用户键入时突出显示
  • 提交时不必添加
    #
  • 对于第一个(用户编写他/她需要的内容,直到scape
    #
    )我编写

    第一部分,自由文本(FT):
    ([,\w\s():\.\$]*)

    对于第二部分,我认为我应该有以下内容:
    (#(必选对)+?)*)
    是最后一个
    *
    ,以确保整个
    序列不是必须的,但一旦他/她添加了
    ,就必须遵循模式

    因此,我得出以下结论:

    并在以下文本中使用(也在上面的链接中)

    这当然行不通,但这不仅仅是因为我知道我会遇到一个问题,即我无法控制是否使用了
    “name”
    。 问题是,使用
    -g
    时,只捕获第一个字段
    名称
    ,而使用
    +g
    时,
    描述
    补码
    显然不是模式中匹配的一部分,因为我可以创建另一个名为
    completlywrong
    的字段,它将出现在我的捕获中

    我非常确信,由于我是新加入regex的人,这是一个不稳定的解决方案。欢迎任何帮助

    试试这个:

    (?:^[^#]*|([a-z]+)\s*:\s*([^;]*))
    
    它将用户文本与第一个匹配匹配,并将所有字段与组1中的名称和组2中的内容匹配


    有没有其他优雅的方法来防止\1(在本例中为[a-z])重复?
    This is is the free text that the user is writing. Now with the scape # name: free text to write; description: another free text and then ; complement : yet another one
    
    (?:^[^#]*|([a-z]+)\s*:\s*([^;]*))