如果存在成对的花括号,则仅允许使用特定的字符串正则表达式

斯图里姆

我正在尝试验证用户输入的令牌。

我的规则是,如果用户在双括号之间输入字符串,{{myToken}}则只能在它们之间放置特定的单词。对于此示例,假设“ dog”和“ cat”有效,但对于括号内的任何其他字符串无效。如果没有大括号,则允许使用任何字符串。

我发现编写一个易于检测的狗或猫非常容易。

测试句子1:

  • “我拥有{{dog}}和{{cat}},但没有一条鱼” –有效

/{{(dog|cat+?)}}/g

但是,我仍然希望这句话也有效

测试语句2:

  • “我拥有一条鱼”-有效

最后,这句话应该是无效的

测试语句3:

  • “我拥有一个{{cow}}” –无效
ctwheels

目前尚不清楚您要匹配的内容,但是如果遵循以下规则,我假设它是整个字符串:

  • 不包含双大括号: {{...}}

    我有一条鱼

  • 包含一个或多个带有以下内容的双花括号: {{dog}} {{cat}}

    我拥有{{dog}}和{{cat}},但没有鱼

与上述内容不符的任何内容均应视为无效:

我拥有一个{{cow}}


有几种匹配这些字符串的方法。

方法1-脾气暴躁的令牌

您可以交替使用扩展的贪婪令牌,以匹配指定的双大括号:

查看正则表达式在这里使用

^(?:(?!{{2}).|{{2}(?:dog|cat)}{2})+$

这个怎么运作:

  • ^ 在行首声明位置
  • (?:(?!{{2}).|{{2}(?:dog|cat)}{2})+ 匹配的贪婪令牌与以下一次或多次匹配
    • (?!{{2}).否定前瞻,确保后面的内容不是{{,如果不是,则匹配该字符(.匹配除换行符以外的任何字符-如果需要匹配换行符,请更改.[\s\S]或启用s修饰符)
    • {{2}(?:dog|cat)}{2}比赛{{dog}}{{cat}}
  • $ 在行尾断言位置

方法2-简单交替

您可以使用一个相当简单的替代方法来替换上面的脾气暴躁的令牌:

请参阅此处使用的正则表达式:(请注意,该链接\n的第一个字符集中具有用于显示的目的)

^(?:[^{]|{(?!{)|{{2}(?:dog|cat)}{2})+$

这个怎么运作:

  • ^ 在行首声明位置
  • (?:[^{]|{(?!{)|{{2}(?:dog|cat)}{2})+ 再匹配以下一次
    • [^{] 匹配任何字符,除了 {
    • {(?!{){如果不跟在后面则匹配{(例如,如果您有类似内容{this}-它将允许匹配)
    • {{2}(?:dog|cat)}{2}比赛{{dog}}{{cat}}
  • $ 在行尾断言位置

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式提取2个花括号之间的字符串

来自分类Dev

Java中的正则表达式,可解析仅包含特定字符的字符串,同时允许空格

来自分类Dev

正则表达式模式在花括号之间获取字符串

来自分类Dev

使用正则表达式查找括号(包括括号)之间的特定字符串

来自分类Dev

JavaScript正则表达式-从无限数量的花括号中获取字符串

来自分类Dev

正则表达式:如果字符串在方括号内包含特定单词,则删除方括号及其内容

来自分类Dev

使用正则表达式从字符串中提取特定字符串

来自分类Dev

正则表达式匹配括号和逗号之间的字符串,但存在多个括号

来自分类Dev

尝试使用特定的正则表达式表达式拆分字符串

来自分类Dev

正则表达式,仅与包含某些特定字符的字符串匹配

来自分类Dev

如果字符串仅包含空格,则匹配的正则表达式是否匹配?

来自分类Dev

使用正则表达式在Pandas数据帧中字符串开头的花括号中剥离数字

来自分类Dev

正则表达式匹配特定字符串(如果存在)之前的所有字符(GA Data Studio)

来自分类Dev

使用正则表达式获取括号内的字符串,删除括号

来自分类Dev

如果关键字存在,则JavaScript正则表达式会拆分字符串

来自分类Dev

使用正则表达式从字符串获取成对的数字

来自分类Dev

正则表达式如果后面跟特定字符串则排除字符串

来自分类Dev

正则表达式删除特定的字符串(如果存在)

来自分类Dev

正则表达式以允许在特定字符串的字符之间留有空格

来自分类Dev

JavaScript正则表达式-从无限数量的花括号中获取字符串

来自分类Dev

正则表达式匹配字符串(如果存在)

来自分类Dev

如何使用正则表达式检查字符串是否仅包含特定字符

来自分类Dev

如何创建正则表达式以匹配括号内的特定子字符串?

来自分类Dev

如何使用正则表达式从字符串中删除特定字符串

来自分类Dev

正则表达式 - 用花括号括起来并用句点分隔的 2 个字符串的模式

来自分类Dev

如果字符串中间存在“=”(等号)符号,则删除引号。正则表达式

来自分类Dev

Python 正则表达式:仅在花括号后面匹配字符串

来自分类Dev

正则表达式:如果链接仅包含特定字符串则匹配

来自分类Dev

正则表达式将不需要的花括号添加到匹配的字符串中

Related 相关文章

  1. 1

    正则表达式提取2个花括号之间的字符串

  2. 2

    Java中的正则表达式,可解析仅包含特定字符的字符串,同时允许空格

  3. 3

    正则表达式模式在花括号之间获取字符串

  4. 4

    使用正则表达式查找括号(包括括号)之间的特定字符串

  5. 5

    JavaScript正则表达式-从无限数量的花括号中获取字符串

  6. 6

    正则表达式:如果字符串在方括号内包含特定单词,则删除方括号及其内容

  7. 7

    使用正则表达式从字符串中提取特定字符串

  8. 8

    正则表达式匹配括号和逗号之间的字符串,但存在多个括号

  9. 9

    尝试使用特定的正则表达式表达式拆分字符串

  10. 10

    正则表达式,仅与包含某些特定字符的字符串匹配

  11. 11

    如果字符串仅包含空格,则匹配的正则表达式是否匹配?

  12. 12

    使用正则表达式在Pandas数据帧中字符串开头的花括号中剥离数字

  13. 13

    正则表达式匹配特定字符串(如果存在)之前的所有字符(GA Data Studio)

  14. 14

    使用正则表达式获取括号内的字符串,删除括号

  15. 15

    如果关键字存在,则JavaScript正则表达式会拆分字符串

  16. 16

    使用正则表达式从字符串获取成对的数字

  17. 17

    正则表达式如果后面跟特定字符串则排除字符串

  18. 18

    正则表达式删除特定的字符串(如果存在)

  19. 19

    正则表达式以允许在特定字符串的字符之间留有空格

  20. 20

    JavaScript正则表达式-从无限数量的花括号中获取字符串

  21. 21

    正则表达式匹配字符串(如果存在)

  22. 22

    如何使用正则表达式检查字符串是否仅包含特定字符

  23. 23

    如何创建正则表达式以匹配括号内的特定子字符串?

  24. 24

    如何使用正则表达式从字符串中删除特定字符串

  25. 25

    正则表达式 - 用花括号括起来并用句点分隔的 2 个字符串的模式

  26. 26

    如果字符串中间存在“=”(等号)符号,则删除引号。正则表达式

  27. 27

    Python 正则表达式:仅在花括号后面匹配字符串

  28. 28

    正则表达式:如果链接仅包含特定字符串则匹配

  29. 29

    正则表达式将不需要的花括号添加到匹配的字符串中

热门标签

归档