正则表达式-匹配字符但不匹配正斜杠

时间:2019-01-10 09:34:45

标签: regex regex-negation regex-group regex-greedy

我实际上正在寻找正则表达式。基本上我想匹配以下URL

/test/*/contact/*

我的输入就是这样

/test/1234/contact/abcd  ----   This is correct
/test/abcd/1234/contact/abcd --- This should show not match

我尝试使用正则表达式

\/test\/\S+\/contact\/\S+

通过使用上面的exp,它表明两者都是正确的。有人可以帮助我如何排除正斜杠吗?

2 个答案:

答案 0 :(得分:1)

\S模式与/匹配。您应该依靠[^\/]否定的字符类并使用定位符:

^\/test\/[^\/]+\/contact\/[^\/]+$

请参见regex demo

详细信息

  • ^-字符串的开头
  • \/test\/-/test/
  • [^\/]+-除/以外的1个以上的字符
  • \/contact\/-/contact/
  • [^\/]+-除/以外的1个以上的字符
  • $-字符串的结尾。

答案 1 :(得分:0)

\S的意思是“不是\s的任何东西”。

\s表示“空白”。等于:[\ r \ n \ t \ f \ v]

  • \ r -回车
  • \ n -换行符
  • \ t -标签
  • \ f -换页符(类似于“下一页”)
  • \ v -垂直空间
  • -简单的空格

因此,\S包含+ /。要实现所需的功能,您可以执行类似“除空格或斜杠之外的任何操作”(即[^\/\s]*)或指定您接受的字符(例如,对于字母数字和-_,它应为:{ {1}}。

如果您有任何问题,请随时提出,