正如标题所暗示的,我只允许特殊字符中的-/ \(破折号,正斜杠,反斜杠)。这个正则表达式下面是什么,但是与下划线不匹配。我该怎么办?
JavaScript:/[^\w\-\/\\]/gi
.NET:^[\w-\/\\]*$
答案 0 :(得分:1)
您可以在JS正则表达式中添加替代项:
var pattern = /(?:[^\w\/\\-]|_)/g;
^^^ ^^^
请参见regex demo。此模式可用于删除 JS中不需要的字符。
在.NET正则表达式中,您可以使用character class substraction,并且模式可以写为
var pattern = @"[^-\w\/\\-[_]]";
要匹配只允许-
,/
和\
+字母/数字组成的整个字符串,请使用
var pattern = /^(?:(?!_)[\w\/\\-])*$/;
var pattern = @"^[-\w/\\-[_]]*$";
请参见此JS regex demo和.NET regex demo。
此处^(?:(?!_)[\w\/\\-])*$
/ ^[-\w/\\-[_]]*$
匹配只包含单词^
的整个字符串($
和/
锚点需要完整的字符串匹配) ,\
和-
个字符。
注意:在C#中,默认情况下\w
与JS正则表达式中的\w
匹配得多。您需要使用RegexOptions.ECMAScript
选项来使\w
的行为与JS中的行为相同。
答案 1 :(得分:0)
如果只想允许破折号,正斜杠和反斜杠,则可以省略^
。这表示negated character class。
您可以使用\w
进行匹配和下划线,并将连字符添加为字符类中的第一个字符。
/[-\w/\\]/g
要匹配整个字符串,可以对字符类使用量词+
进行一次或多次匹配,并在字符串锚点的^
和$
末尾:
^[-\w/\\]+$
const regex = /^[-\w/\\]+$/g;
const strings = [
"test2_/\\",
"test2$_/\\"
];
strings.forEach((str) => {
console.log(str.match(regex));
});
答案 2 :(得分:0)
我对您的目标和您的代码有些困惑。因此,this what you want是吗?
模式-/[\\\/-]/g