Java正则表达式 - 在“/”之后测试单词的url

时间:2015-07-08 23:12:44

标签: java regex

我有一个网址如下:

{anydomain}/my-app/test/b5/

我想测试my-app/之后/test/b5之后的所有字符如下:

test - 允许所有内容 - 包括下划线在内的所有字符

for b5 - 我正在寻找只允许一个数字

的正则表达式

我有以下内容,但它失败了:

Pattern.compile("/(\\w()|-)+/(/^(?![0-9]*$)[a-zA-Z0-9]+$/()|-)+(/)?");

/(\\w()|-) - 检查测试并正常工作

/(/^(?![0-9]*$)[a-zA-Z0-9]+$/()|-) - 应该检查b5但是失败了。

我需要正则表达式的最后一部分。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你的正则表达是不必要的长。几点:

  1. \w转换为[a-zA-Z_0-9]
  2. ()没用,因为括号用于分组。
  3. $表示输入文本结尾的匹配项。
  4. 回答问题。给出你在那里的格式的部分网址,这将验证你的字符串:

    /[\w]+/([^\d]+|[^\d]*\d[^\d]*)/$
    

    /[\w]+用于第一部分(测试)。

    /([^\d]+|[^\d]*\d[^\d]*)/$/开头,查找所有非数字,直到/$或1位数字包围可选的非数字。