正则表达式,用于在不在启动之间停止除_之外的特殊字符

Abh*_*bhi 5 .net c# regex

我正在尝试创建一个常规的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)

此代码显示错误

Tim*_*ker 1

假设您只想允许 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)

看看它的实际效果: RegexBuddy 的屏幕截图