我正在try 更新当前的regex ^[^-]*-?[^-]*$,以便只接受第一个和最后一个字符的字母数字,并接受regex C#中中间只有0或1个连字符的字母数字.

请判断下面的有效值和无效值.

Invalid values:

-A
B2-
A--B
#12

Valid values:

A
A-B
"" // empty
1A
12

请给我建议?

谢谢,

推荐答案

您可以将整个模式设置为可选,并且只允许以字符A-Z 0-9开头,可选部分为-,并再次允许以字符A-Z 0-9开头:

 ^(?:[A-Z0-9]+(?:-[A-Z0-9]+)?)?$

如果匹配不区分大小写,则可以使用[a-zA-Z0-9]或模式以(?i)开头

Explanation

  • ^字符串开头
  • (?: Non capture group
    • [A-Z0-9]+个1+字符A-Z0-9
    • (?:-[A-Z0-9]+)?可选匹配-和1+字符A-Z0-9
  • )?关闭非捕获组并将整个部分设置为可选
  • $字符串尾

Regex demo

或匹配任何类型的字母和任何类型的数字:

^(?:^[\p{L}\p{N}]+(?:-[\p{L}\p{N}]+)?)?$

Regex demo

Csharp相关问答推荐

将实例绑定方法传递到列表foreach

如何创建ASP.NET Core主机并在同一进程中运行请求

限制特定REST API不被访问,但部署代码

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

Amazon SP-API确认发货不设置&Quot;递送服务

在调整大小的控件上绘制

为什么Regex.IsMatch(";\\t";,";\\t";)返回FALSE而不是TRUE?

UWP应用程序try 将打包的本机.exe文件加载为C#程序集

在.NET 7.0 API控制器项目中通过继承和显式调用基类使用依赖项注入

将类移动到新命名空间后更新RavenDB Raven-Clr-Type

具有以接口为其类型的属性的接口;类指定接口的实现,但无效

正在try 从Blazor中的API读取JSON

带有列表参数的表达式树

正在寻找新的.NET8 Blazor Web应用程序.如何将.js添加到.razor页面?

在Windows Plesk上发布ASP.NET Core 7 Web API-错误:无法加载文件或程序集';Microsoft.Data.SqlClient';

如何返回具有泛型的类?

为什么Azure函数(独立工作进程)索引失败?使用Azure App配置的CosmosDbTrigger绑定失败,未解析为值

如何强制新设置在Unity中工作?

Windows 10上埃及标准时间的时区偏移不正确

如何在flutter dart中使用publicKey.xml文件进行rsa加密,我遇到了问题Exception:Could not parse BigInt