搜索验证正则表达式在 JavaScript 中不起作用

Search validation regex not working in JavaScript

我想用正则表达式验证我的文本框。文本框的值应该是这样的 – “/word/Search” – 即正斜杠,然后是任何单词,然后再次是正斜杠,然后是固定单词 "Search".

这是一个示例输入:

/admin/Search

我尝试了以下模式,但不匹配:

[/\/][\w][/\/][\Search]

这个模式有什么问题?

我想这就是您要查找的表达式:

\[\w]*\Search

试试这个:

\/\w+\/Search
  • \/ – 不需要字符 class(即由 [ 打开并由 ] 关闭)来匹配斜杠......当你可以的时候只需匹配斜杠(注意 \/ 假定您是 using a regex literal rather than constructing a RegExp object:对于后者 / 就可以了。)
  • \w+ – 一个或多个单词字符(同样不需要字符 class)
  • \/ – 结束斜杠(与开头相同)
  • Search – 您期望在右斜线之后的固定词 Search(也不需要字符 class)

您可以针对您在 regex fiddle 中提供的示例文本框输入尝试更新的模式。

(吹毛求疵)警告:

可能想要收紧 word 子模式(即 \w+),因为 \w.. .

Matches any alphanumeric character including the underscore. Equivalent to [A-Za-z0-9_].

...according to MDN's JavaScript regular expressions reference。至少要注意它匹配数字和下划线。

如果你确实想收紧它,那么你有一个角色class的场合 – 例如:

  • [A-Za-z0-9]+ – 类似于 \w+ 除了不匹配下划线
  • [A-Za-z]+ – 类似于 \w+ 除了它不会匹配数字 下划线

由于每个人似乎都忽略了您的实际问题,所以您的正则表达式有什么问题:

  1. 字符类[...]。这使得 [\Search] 匹配 \Search 中的单个字符 而不是 字面词 Search
  2. 出于某种原因,当您实际上只想匹配一个正斜杠 /.
  3. 时却写了 /\/
  4. 你要匹配多个字符,所以你得把\w改成\w+

结果:

/\w+/Search