带有数字和一些特殊字符的正则表达式

时间:2017-01-31 17:31:34

标签: c# regex

我需要帮助创建一个能够识别文本中令牌的正则表达式 令牌要求如下:

  • 应以$
  • 开头和结尾
  • 可以包含字母,数字_
  • 的任意组合
  • 只能包含一个连续.,意思是:
    • $some.valid.sample$有效
    • $some..invalid.sample$不是
  • 可以包含方括号,但仅当它们包含内部数字时,意味着:
    • $some.valid[0].sampl$有效
    • $some.invalid[].sample$不是
  • 包含1到64个字符

附加要求(在评论中讨论后):

  • 带数字的方括号如果不在最后,则必须跟.后面(即如果它们不在关闭$之前)
  • 长度约束适用于两个$
  • 之间的内容

任何人都可以帮我解决这个问题吗? 到目前为止,我有\$([A-Za-z0-9._]*(\[\d+\])*)+]$

2 个答案:

答案 0 :(得分:3)

根据评论中更新的规则,这就是您所需要的:

\$(?=[^\$]{1,64}\$)\w+(?:\[\d+\])?(?:\.\w+(?:\[\d+\])?)*\$

答案 1 :(得分:1)

这种模式怎么样:

\$\w+?.?\w*?(\[\d+\]?)?.?\w*?\$

你可以test it here

但它有点过于狭窄。我会接受@Wiktor Stribizew的建议