这个正则表达式意味着我认为它意味着什么?

时间:2013-06-25 16:26:56

标签: regex

正则表达式:

start\_[a-z0-9]{3,}\_[a-z0-9]{3,}\.txt

我认为这意味着:

  1. 匹配任何以“start _”开头的字符串
  2. 然后有字母数字 子字符串大于3个字符
  3. 然后用一个分开 下划线
  4. 然后有大于3的字母数字子串 字符
  5. 最后有一个“.txt”扩展名
  6. 问题:

    任何人都可以确认这种行为吗?除了“{3,}”的含义之外,我能够通过良好的方式验证所有内容。任何帮助是极大的赞赏!

    -tsnm

5 个答案:

答案 0 :(得分:10)

一些评论 -

  1. start\_应为^start\_。那样你就可以放心了 字符串的开头(而不是中间的)
  2. [a-z0-9]{3,}是任何小写字母数字字符。如果你想要大写,你应该使它[a-zA-Z0-9]。此外,如果您希望它大于3(并且不等于),请将其设为{4,}
  3. 这很好
  4. 与2
  5. 相同的问题
  6. 如果您想确保.txt在最后,您应该将其设为\.txt$
  7. 如果没有我的建议,这将匹配 -

    blahblahlbahstart_abc123_abc123.txtblahblahblah

    这不会 -

    start_ABC123_ABC123.txt

    此外,'_'不是正则表达式的特殊字符。这意味着它应该\转义。所以你的最终正则表达式应该是 -

    ^start_[a-zA-Z0-9]{4,}_[a-zA-Z0-9]{4,}\.txt$

答案 1 :(得分:5)

你非常接近。让我们依次采取这种做法:

start\_

  

匹配任何以“start _”开头的字符串

正确。

[a-z0-9]{3,}

  

然后包含大于3个字符的字母数字子字符串

关闭。这意味着“具有字母数字子串3个字符或更多”。

\_

  

然后用下划线

分隔

正确。

[a-z0-9]{3,}

  

然后包含大于3个字符的字母数字子字符串

再次,关闭。这意味着“具有字母数字子串3个字符或更多”。

\.txt

  

最后有一个“.txt”扩展名

正确。

答案 2 :(得分:3)

我会说你很亲密,但并不完全正确。

[a-z0-9]{3,}

将匹配 3个或更多小写字母或数字。如果正则表达式在不区分大小写的文本中运行,它也将匹配大写字母。

如上所述,您的正则表达式将匹配包含该模式的任何字符串。如果您希望它匹配整个字符串,您可以使用标记作为字符串的开头和结尾:

^start\_[a-z0-9]{3,}\_[a-z0-9]{3,}\.txt$

此外,您可能不需要转义下划线。

答案 3 :(得分:1)

这是一个非常有用的工具 https://addons.mozilla.org/nl/firefox/addon/rext/

这样你就可以自己测试一下。如果用weblanguages编程,你必须刷新每一个更改,这些更新动态,所以你可以非常快地调整你的正则表达式:)

答案 4 :(得分:-2)

start_然后是3个字母数字字符然后_然后允许3个字母数字字符后跟.txt格式文件名