【发布时间】:2011-09-16 22:15:43
【问题描述】:
我正在使用以下 JavaScript 正则表达式来验证用户的名字和姓氏
var regexp = /^((?=[a-z \']).)+$/i;
var val1 = "Normal Text' Compromised"; // true
var val2 = "UTF Text' Połącz Słońce w Mózu"; // false <---- UTF-8
var val3 = "Illegal char: Blac & White"; // false
示例:http://jsfiddle.net/PR4T2/1/
问题:
有什么方法可以让正则表达式“UTF-8 insensitive”让用户使用 UTF 字符?
我知道 JS 验证还不支持 UTF,但我想知道是否有任何解决方法。 我也不想手动排除所有非法字符,例如:
var regexp = /^((?![0-9\~\!\@\#\$\%\^\&\*\(\)\_\+\=\-\[\]\{\}\;\:\"\\\/\<\>\?]).)+$/;
编辑:
条件是字符:a-z、空格、\、' 和任何其他可以在用户中找到的 UTF 字符 名字/姓氏,例如here。
我正在寻找更通用的东西,例如 PHP 中的 \p{xx} 排序器
【问题讨论】:
-
Javascript 完美支持 Unicode。事实上,你不能在 Javascript 中使用除了 Unicode 之外的任何东西。
-
另外,也许您可以澄清一下您的“验证”标准是什么?
-
@deceze 标准是字符:a-z、空格、\、' 以及可以在用户名字/姓氏中找到的任何其他 UTF,例如 slovo.info/testuni.htm
-
这是什么意思?名称可能包含字母 A-Z、空格和撇号?这与您“让用户使用 UTF-8 字符”的想法有何关系?你的意思是像
ł这样的字母应该被视为l吗?那与UTF-8关系不大。还有,“让-卢克”呢? -
@WooDzu UTF-8 是一种 Unicode 编码。它不适用于这里。 (JavaScript 字符串文字是 Unicode,而不是 UTF-8,尽管可以说 JavaScript 字符串表示为 UTF-16,因为它们使用 C# 或 Java 等代理对来表示 BMP 之外的代码点)。
标签: javascript regex validation