用于验证UTF-8的正则表达式只包含"normal"字符
Regex for validating UTF-8 contains only "normal" characters
在我的项目中,用户可以注册一个公开可见的昵称。我希望允许该名称包含来自任何脚本的字符(阿拉伯语,拉丁语,西里尔文,日文等),但防止控制字符,标点符号和非字母字符,如或.
我已经找到了很多从各种单独的脚本中过滤字母数字字符的例子,但我不想花几天时间挖掘编码表,试图手动允许每个脚本通过。
建议吗?
在JavaScript中,当你想在正则表达式中处理Unicode时,通常的解决方案是放弃。
下一个最常见的解决方案是使用xregexp,它碰巧有你似乎需要的类:
var unicodeWord = XRegExp('^''p{L}+$');
unicodeWord.test('Русский'); // -> true
unicodeWord.test('日本語'); // -> true
unicodeWord.test('العربية'); // -> true
我以前在Perl中使用'p{Latin}来选择所有拉丁字符。在这个页面的中间有一个完整的选项列表:http://www.regular-expressions.info/unicode.html。
这似乎可以延续到Javascript,因为它使用XRegExp。
编辑2:OR -创建一个不允许的字符列表来检查-然后'p{common}将作为起点。
编辑:显然,我做这件事的记忆来自许多亿年前。我无法让它与我当前的Perl构建一起工作(这是一种特殊情况)。所以-它可能完全错了。相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中