我查看了Stack Overflow (替换字符. .嗯, JavaScript如何不遵循关于RegExp的Unicode标准等),并没有真正找到问题“__abc2”的具体答案。
我强迫UI中的一个字段匹配格式:last_name, first_name
(最后[逗号空格]第一个),我想提供对变音符的支持,但显然在JavaScript中比其他语言/平台更难一点。
这是我最初的版本,直到我想添加变音符支持:
/^[a-zA-Z]+,\s[a-zA-Z]+$/
目前,我正在讨论添加支持的三种方法中的一种,所有这些方法我都已经测试过并且有效(至少在某种程度上,我真的不知道"程度;quot;属于第二种方法)。他们是:
var accentedCharacters = "àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ";
// Build the full regex
var regex = "^[a-zA-Z" + accentedCharacters + "]+,\\s[a-zA-Z" + accentedCharacters + "]+$";
// Create a RegExp from the string version
regexCompiled = new RegExp(regex);
// regexCompiled = /^[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+,\s[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$/
accentedCharacters
中支持的任何重音字符匹配。.
字符类,以获得一个更简单的表达式:var regex = /^.+,\s.+$/;
something, something
的形式。我想还可以……/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/
以下是我的担忧:
.
匹配的真实文档,只是概括了“除换行符外的任何字符”。(来自中数上的一个表)。
\u00C0-\u017F
似乎是相当可靠的,至少对我预期的输入是这样。
这三种方法中哪一种最适合这项任务?或者有没有更好的解决方案?