如何近似Java';s Character.isleterOrdigit()来标识Javascript中的非英语字母、数字?
在Javascript中,是否有一种方法(在国际化后仍然有效)来确定字符是字母还是数字?这将正确地将Ä、ç识别为字母和非英语数字(我不打算将其作为示例查找) 在Java中,Character类有一些静态方法.isLetter(),.isDigit(),.isLetterOrDigit(),用于以国际通用的方式确定字符实际上是字母或数字。这比像这样的代码要好如何近似Java';s Character.isleterOrdigit()来标识Javascript中的非英语字母、数字?,javascript,regex,internationalization,Javascript,Regex,Internationalization,在Javascript中,是否有一种方法(在国际化后仍然有效)来确定字符是字母还是数字?这将正确地将Ä、ç识别为字母和非英语数字(我不打算将其作为示例查找) 在Java中,Character类有一些静态方法.isLetter(),.isDigit(),.isLetterOrDigit(),用于以国际通用的方式确定字符实际上是字母或数字。这比像这样的代码要好 //this is not right, but common and easy if((ch>='A'&&ch<
//this is not right, but common and easy
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) { //it's a letter
这在IE、FF和Chrome中测试得相当不错。。。尽管可能需要进行彻底的测试,以确定答案的一致性。同样,由于元素创建的原因,不适合重载使用。据我所知,当遇到类似问题时,唯一的方法就是选择几个块并假设它们是字母。unicode标准有完整的列表,因此您可以为此构建一个完整的正则表达式(我认为)。例如,如果你按照字母顺序选择所有的字符,那么你可能拥有所有的字母字符。中的数字(十进制、数字、数字)也是如此
我不完全确定我指的方向是否正确。有很多可能会有帮助,当然还有它本身。不过,阅读和理解这些都有点困难,特别是当您的唯一目标是进行一些javascript字符串验证时。我创建了一个小型javascript实用程序来提供此功能。我不认为它是完美的,所以让我知道你如何公平。如果人们喜欢,我会把它作为这个问题的正式答案 查芬克:
- getDirectionality(ch)-用于查找角色的方向性
- isAllLettersOrDigits(string)-如果string参数由所有字母和数字组成,则返回true
- isDigit(ch)-如果提供长度为1的数字字符串,则返回true
- isLetter(ch)-如果提供长度为1的字符串,即字母,则返回true
- 如果提供了Unicode“Nl”类别中的长度为1的字符串,则返回true
- 如果提供了长度为1的字符串,即字母或数字,则返回true
- isLowerCase(ch)-如果提供长度为1的小写字符串,则返回true
- isMirrored(ch)-如果提供长度为1的镜像字符字符串,则返回true
- isUpperCase(ch)-如果提供长度为1的大写字符串,则返回true
- isValidFirstForName(ch)-如果提供了长度为1的字符串,该字符串是JavaScript标识符的有效前导字符,则返回true
- isValidMidForName(ch)-如果提供的长度为1的字符串是ECMAScript标识符的有效非前导字符,则返回true
- isValidName(string,checkReserved)-如果字符串是有效的ECMAScript标识符,则返回true
- isWhitespace(ch)-如果提供长度为1的字符串作为空白字符,则返回true
- indexOf(string,callback)-返回第一个匹配的索引,该索引从回调返回一个真正的返回值
- lastIndexOf(字符串,回调)-返回最后一个匹配的索引,该索引返回回调的真实返回值
- matchesAll(string,callback)-如果提供的字符串中的所有字符都导致回调返回true,则返回true
- replaceMatches(string,callback,ch)-返回一个新字符串,替换所有匹配的字符
var validName=function(atr) {
var ele=document.createElement("div");
try { ele.setAttribute(atr,"xxx"); }
catch(e) { return false; }
return true;
}