我需要有一个正则表达式,它将检查另一个字符串中是否存在某个字符串,并且此后是否有任何数量的字符。我写了这个表情:
(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,破折号和下划线。
我如何使其工作?
答案 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/