合并 3 个正则表达式以进行 Slug/URL 验证检查
Merging 3 Regular Expressions to make a Slug/URL validation check
我正在尝试将一些有效的 RegEx 模式合并在一起(以及它们)。我不认为我这样做是正确的,此外,第一个 RegEx 可能会妨碍接下来的两个。
Slug 示例(除 -
和 _
外没有特殊字符):
(^[a-z0-9-_]+$)
然后我想确保第一个字符不是 -
或 _
:
(^[^-_])
然后我想确保最后一个字符不是 -
或 _
:
([^-_]$)
匹配(好的别名):
- my-new_page
- 页面名称
不匹配(别名错误)
- -我的新页面
- 我的新页面_
- !@#$%^&*()
如果这个RegExp可以简化,我很乐意使用它。我正在尝试在用户可以提供的页面 URL 上创建验证,我正在寻找用户:
- 不以特殊字符开头或and
- 以数字或字母开头和结尾
- 中间(不是开始和结束)可以包括
-
和_
一旦我成功了,我可以根据需要调整其他角色。
最后我像这样作为 Annotation
申请我的模型:
[RegularExpression(
@"(^[a-z0-9-_]+$)?(^[^-_])?([^-_]$)",
ErrorMessage = "Alias is not valid")
]
谢谢,如果我需要提供更多信息,请告诉我。
^[a-z\d](?:[a-z\d_-]*[a-z\d])?$
^
在行首声明位置
[a-z\d]
匹配任何小写 ASCII 字母或数字
(?:[a-z\d_-]*[a-z\d])?
可选匹配以下
[a-z\d_-]*
匹配集合中任意字符任意次数
[a-z\d]
匹配任何小写 ASCII 字母或数字
$
断言行尾的位置
使用系统;
使用 System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
Regex regex = new Regex(@"^[a-z\d](?:[a-z\d_-]*[a-z\d])?$");
string[] strings = {"my-new_page", "pagename", "-my-new-page", "my-new-page_", "!@#$%^&*()"};
foreach(string s in strings) {
if (regex.IsMatch(s))
{
Console.WriteLine(s);
}
}
}
}
结果(仅正匹配):
my-new_page
pagename
我正在尝试将一些有效的 RegEx 模式合并在一起(以及它们)。我不认为我这样做是正确的,此外,第一个 RegEx 可能会妨碍接下来的两个。
Slug 示例(除 -
和 _
外没有特殊字符):
(^[a-z0-9-_]+$)
然后我想确保第一个字符不是 -
或 _
:
(^[^-_])
然后我想确保最后一个字符不是 -
或 _
:
([^-_]$)
匹配(好的别名):
- my-new_page
- 页面名称
不匹配(别名错误)
- -我的新页面
- 我的新页面_
- !@#$%^&*()
如果这个RegExp可以简化,我很乐意使用它。我正在尝试在用户可以提供的页面 URL 上创建验证,我正在寻找用户:
- 不以特殊字符开头或and
- 以数字或字母开头和结尾
- 中间(不是开始和结束)可以包括
-
和_
一旦我成功了,我可以根据需要调整其他角色。
最后我像这样作为 Annotation
申请我的模型:
[RegularExpression(
@"(^[a-z0-9-_]+$)?(^[^-_])?([^-_]$)",
ErrorMessage = "Alias is not valid")
]
谢谢,如果我需要提供更多信息,请告诉我。
^[a-z\d](?:[a-z\d_-]*[a-z\d])?$
^
在行首声明位置[a-z\d]
匹配任何小写 ASCII 字母或数字(?:[a-z\d_-]*[a-z\d])?
可选匹配以下[a-z\d_-]*
匹配集合中任意字符任意次数[a-z\d]
匹配任何小写 ASCII 字母或数字
$
断言行尾的位置
使用系统; 使用 System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
Regex regex = new Regex(@"^[a-z\d](?:[a-z\d_-]*[a-z\d])?$");
string[] strings = {"my-new_page", "pagename", "-my-new-page", "my-new-page_", "!@#$%^&*()"};
foreach(string s in strings) {
if (regex.IsMatch(s))
{
Console.WriteLine(s);
}
}
}
}
结果(仅正匹配):
my-new_page
pagename