如标题所示,我只想允许 -/\(破折号、正斜杠、反斜杠)来自特殊字符。这是下面的正则表达式,但它不匹配下划线。我该怎么做?
JavaScript:/[^\w\-\/\\]/gi
.NET:^[\w-\/\\]*$
最佳答案
您可以在 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/\\-[_]] *$
匹配整个字符串(^
和 $
anchor 需要完整的字符串匹配),只包含单词,/
, \
和 -
字符。
注意:在 C# 中,\w
默认情况下比 JS 正则表达式中的 \w
匹配更多。您需要使用 RegexOptions.ECMAScript
选项来使 \w
的行为与在 JS 中的行为相同。
关于javascript - 正则表达式只允许某些特殊字符并限制下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595874/