正则表达式,带有一定的字符串以及此后的任意数量的字符

时间:2018-08-22 12:10:15

标签: javascript regex

我需要有一个正则表达式,它将检查另一个字符串中是否存在某个字符串,并且此后是否有任何数量的字符。我写了这个表情:

(somesite.com\/user\/[a-zA-Z0-9-_])\w\S

例如,此字符串www.somesite.com/user/username应该返回true,而这个www.somesite.com/user-false。

由于某种原因,它仅在somesite.com/user/部分之后至少有3个字符时才起作用。因此somesite.com/user/me返回false。并且somesite.com/user/someuser仅对somesite.com/user/som返回true。

user/部分之后唯一允许使用的字符应为a-z,A_Z,0-9,破折号和下划线。

我如何使其工作?

2 个答案:

答案 0 :(得分:2)

user/之后需要三个字符,因为[a-zA-Z0-9-_]\w\S匹配(因此要求)在user/之后必须存在三个字符。

您似乎需要

somesite\.com\/user\/[\w-]+

请参见regex demo

请注意,.应该转义以匹配文字点。 \w通常默认情况下代表[A-Za-z0-9_],因此您可以使用该速记字符类来缩短模式。

详细信息

  • somesite\.com\/user\/-一个somesite.com/user/子字符串
  • [\w-]+-1个或多个单词字符(字母,数字,_)和/或-

JS演示

var ss = ['www.somesite.com/user/username', 'somesite.com/user/me', 'www.somesite.com/user'];
var rx = /somesite\.com\/user\/[\w-]+/g;
for (var s of ss) {
  console.log(s, "=>", s.match(rx));
}

答案 1 :(得分:1)

尝试(somesite.com\/user\/[a-zA-Z0-9-_]+)

您可以在此处验证您的正则表达式: https://regex101.com/