Jer*_*emy 38 .net regex validation
给定这个正则表达式:"^[0-9]*\s*(lbs|kg|kgs)$" 如何使其不区分大小写?我试图在.net正则表达式验证器中使用它,所以我需要在模式中指定不区分大小写.
我不能以编程方式使用RegexOptions,因为我在RegularExpressionValidator中指定正则表达式
Jer*_*emy 51
我发现.
区分大小写: ^[0-9]\s(lbs|kg|kgs)$
不区分大小写: (?i:^[0-9]\s(lbs|kg|kgs)$)
我相信这是特定于正则表达式的.NET实现.因此,如果您在RegularExpressionValidator中使用它,则必须关闭客户端验证,因为javascript正则表达式解析器将无法识别该?i令牌.
Ric*_*uen 24
使用RegEx选项.
Regex regExInsensitive = new Regex(@"^[0-9]\s(lbs|kg|kgs)$", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
在其他语言中,您通常可以在Reg Ex结束后指定RegEx修饰符; 'case insensitive'修饰符是'i':
在Perl中:
if($var =~ /^[0-9]\s(lbs|kg|kgs)$/i) { # the /i means case insensitive
# ...
}
Run Code Online (Sandbox Code Playgroud)
在PHP中:
if(preg_match("/^[0-9]\s(lbs|kg|kgs)$/i", $var)) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
当真正需要不区分大小写的服务器端和客户端时,这是使用 CustomValidator 的替代方案;而上/下 [A-Za-z] 字符方法太多了。
这使用服务器端 RegEx 对象和客户端 JavaScript 语法混合了各种其他答案。
自定义验证器:
<asp:CustomValidator ID="cvWeight" runat="server" ControlToValidate="txtWeight"
OnServerValidate="cvWeight_Validate" ClientValidationFunction="cvWeight_Validate"
ValidateEmptyText="true" Text="*" ErrorMessage="Invalid entry." />
Run Code Online (Sandbox Code Playgroud)
背后代码:
protected void cvWeight_Validate(object sender, ServerValidateEventArgs args)
{
Regex re = new Regex(@"^[0-9]*\s*(lbs|kg|kgs)$", RegexOptions.IgnoreCase);
args.IsValid = re.IsMatch(args.Value);
}
Run Code Online (Sandbox Code Playgroud)
客户端验证函数:
function cvWeight_Validate(sender, args) {
var reWeight = /^[0-9]*\s*(lbs|kg|kgs)$/i;
args.IsValid = reWeight.test(args);
}
Run Code Online (Sandbox Code Playgroud)
这对我来说工作得很好,除了使用 ValidationSummary 时。在客户端验证中,*显示错误,但我无法在摘要中显示错误消息。摘要仅在提交时显示。我认为它应该显示;我混合了更新面板和遗留代码,这可能会出现问题。
| 归档时间: |
|
| 查看次数: |
26858 次 |
| 最近记录: |