【发布时间】:2010-09-03 20:14:27
【问题描述】:
在 Javascript 中,有没有办法(在国际化中幸存下来)确定一个字符是字母还是数字?这将正确地将 Ä、ç 识别为字母和非英语数字(我不打算将其作为示例查找)!
在 Java 中,Character 类有一些静态方法 .isLetter()、.isDigit()、.isLetterOrDigit(),用于以国际通用的方式确定 char 实际上是字母还是数字。这比像这样的代码更好
//this is not right, but common and easy
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) { //it's a letter
因为它会拾取非英文字母。我认为 C# 也有类似的能力...
当然,最坏的情况是我可以将字符串发送回服务器进行检查,但这很痛苦......
当然,最后我希望检查输入是否为有效名称(以字母开头,其余为字母或数字)。低容量使用的开箱即用可能性可能是:
var validName=function(atr) {
var ele=document.createElement("div");
try { ele.setAttribute(atr,"xxx"); }
catch(e) { return false; }
return true;
}
这在 IE、FF 和 Chrome 中测试得相当不错……尽管可能需要进行彻底的测试才能确定答案的一致性。同样,由于元素创建,不适合重载使用。
【问题讨论】:
-
遗憾的是,Javascript regex /w(匹配单词字符)认为 Ä 是非单词字符。至少在 Chrome 和 FF 中
-
这个相关问题stackoverflow.com/questions/1073412/… 似乎表明除了尝试列出您要假装不是数字和字母的字符之外,没有真正的解决方案......我希望有人知道得更好!
-
“非英文数字”应该包括什么?
标签: javascript regex internationalization