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