JavaScript и регулярных выражений: как я могу проверить, если строка содержит только символы ASCII?
Я знаю, что могу проверить строку со словами (0-9 A-Z a-z и подчеркивание), применив W в регулярном выражении следующим образом:
function isValid(str) { return /^w+$/.test(str); }
Но как проверить, содержит ли строка только символы ASCII? ( Кажется, я уже близко, но что я пропустил? )
Ссылка: https://stackoverflow.com/a/8253200/188331
UPDATE : для моего случая достаточно стандартного набора символов.
2 ответов:
Все, что вам нужно сделать, это проверить, что символы находятся в правильном диапазоне символов.
function isASCII(str) { return /^[\x00-\x7F]*$/.test(str); }Или если вы хотите использовать расширенный набор символов ASCII:
function isASCII(str, extended) { return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(str); }
Вам не нужно регулярное выражение, чтобы сделать это, просто проверьте, если все символы в этой строке имеют код char между 0 и 127:
function isValid(str){ if(typeof(str)!=='string'){ return false; } for(var i=0;i<str.length;i++){ if(str.charCodeAt(i)>127){ return false; } } return true; }
Comments