字母开头的正则表达式怎么写?

01-01
G05B19/05(2006.01)I
F26B9/06(2006.01)I
_12

类似于以上这四条的数据,要求判断是否是[A-Z]字母开头的记录,还是数字开头的记录。

 if (Regex.IsMatch(str, @"[A-Z]*.?$"))
    return "字母"
 else if (Regex.IsMatch(str, @"[0-9]*$"))
      return "数字"
 else
      return "-";
      
      

我是这么写的,正则判断不出来。

阅读 12.6k
3 个回答

字母开头是 ^[A-Za-z]
数字开头是 ^[0-9]

正则表达式匹配开头用^

而且*是表示0个或多个,也就是说没有也会匹配,所以[A-Z]*也会匹配非字母开头的。

?表示0个或1个,所以.?表示最多匹配一个任意字符,后面再跟着匹配结束的$自然就匹配不到了。

还有+,表示匹配1个或多个

$表示匹配结尾(一般是结尾是换行,全局匹配的话就是字符串结束),如果你只想匹配开头的话,结尾就没必要了

所以你的两个正则应该是:
字母开头:^[A-Z]
数字开头:^[0-9]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进