我希望匹配多种语言中的所有字符,但不适用于名称或 title 中的某些字符,例如特殊字符,标点符号和非字符 - 可打印的字符。我想允许下划线'_'和数字,但我也不希望字符串以下划线开头。字符串也不应超过100个字符,且不能为空。
基本上我想形成以下正则表达式的多语言版本:[a-zA-Z0-9]{1}[a-zA-Z0-9_]{0,99 }
最低限度,这需要在ASP.NET MVC应用程序中完成服务器端验证。最好它也可以在JavaScript中用于客户端验证,但我不介意它在服务器上失败,使用稍微弱一些的正则表达式将一些符号和标点符号列入黑名单但可能让一两个字符通过并最终在服务器上失败
根据我发现的搜索结果,我尝试过以下方法:
[^\p{L}\p{N} ]+
但这似乎与标点符号相符。我也试过[\p{Xan}]
。
现在,我意识到我正在一个名为Debuggex的网站上测试它们,这些可能起作用的原因是JavaScript中正则表达式中的Unicode支持似乎有限。当我在debuggex中测试它时它是否“不工作”但在实际应用程序中可以正常工作?