我正在尝试创建一个常规的exp来阻止用户在字符串中的任何地方输入特殊字符,但是除了起点之外,它们在字符串中包含数字和下划线.
场景
abhi_3123123 valid
abhi___ASDFAS valid
3425_asdfasdf invalid
_asdfasdf invalid
sometext(having any spcl character at any place) invalid
Run Code Online (Sandbox Code Playgroud)
只有在开头和结尾之间才允许使用下划线
更新的代码
我在我的文本框的textchange事件上调用此代码
string regEx = @"^[a-zA-Z][a-zA-Z0-9_]*(?<!_)$";
if (System.Text.RegularExpressions.Regex.IsMatch(txtFunctionName.Text, regEx))
{
//no error
}
else
{
// show error
}
Run Code Online (Sandbox Code Playgroud)
此代码显示错误
假设您只想允许 ASCII 字母、数字和下划线,请使用
^[a-zA-Z]\w*(?<!_)$
Run Code Online (Sandbox Code Playgroud)
在 Java 中或
^[a-zA-Z][a-zA-Z0-9_]*(?<!_)$
Run Code Online (Sandbox Code Playgroud)
在.NET中。
解释:
^ # Start of string
[a-zA-Z] # First character: ASCII letter
[a-zA-Z0-9_]* # Following characters: ASCII letter, digit or underscore
(?<!_) # Assert that last character isn't an underscore
$ # End of string
Run Code Online (Sandbox Code Playgroud)
看看它的实际效果:
