c# - 正则表达式停止除 _ 之外的特殊字符 not in start

标签 c# .net regex

我正在尝试创建一个常规 exp 以阻止用户在字符串中的任何位置输入特殊字符,但除了起始点之外,在字符串中允许数字和下划线。

场景

        abhi_3123123  valid
        abhi___ASDFAS valid
        3425_asdfasdf invalid
        _asdfasdf     invalid
        sometext(having any spcl character at any place) invalid

只能在开始和结束之间使用下划线

更新代码

我在我的文本框的 textchange 事件上调用这段代码

 string regEx = @"^[a-zA-Z][a-zA-Z0-9_]*(?<!_)$";
 if (System.Text.RegularExpressions.Regex.IsMatch(txtFunctionName.Text, regEx))
 {
   //no error
 }
 else
 {
   // show error
 }

这段代码显示错误

最佳答案

假设您只想允许 ASCII 字母、数字和下划线,请使用

^[a-zA-Z]\w*(?<!_)$

Java 或

^[a-zA-Z][a-zA-Z0-9_]*(?<!_)$

在 .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

查看实际效果: Screenshot from RegexBuddy

关于c# - 正则表达式停止除 _ 之外的特殊字符 not in start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724174/

相关文章:

regex - Oracle 正则表达式寻找空格或字符串结尾

c# - DDD : Should Persistence Logic belong to Infrastructure Layer?

c# - 无法获取 head 的内部内容,因为内容不是字面意思。 - 尝试附加到标题

c# - XmlReader.ReadSubTree() 始终返回 NONE

c# - 如何在 .NET 1.1 中显示无模式拥有的对话框

mysql - 将 INNER JOIN 与插入和更新一起使用时,VB.Net 中出现错误

php - 如何preg_replace?

python - 如何将字符串的各个部分提取为单独的字符串

尝试在扩展类型 T 上实现抽象泛型类时出现 C# 编译错误

c# - 提高随机创建面板的性能