JavaScript & regex: Как проверить, является ли только строка ASCII?
Я знаю, что могу проверять строку со словами (0-9 A-Z a-z и подчеркивание), применяя W
в регулярном выражении следующим образом:
function isValid(str) { return /^\w+$/.test(str); }
Но как проверить, содержит ли строка только символы ASCII? (Я думаю, что я рядом, но что я пропустил?)
Ссылка: qaru.site/info/442529/...
ОБНОВЛЕНИЕ. Для моего случая достаточно стандартного набора символов.
Ответы
Ответ 1
Все, что вам нужно сделать, это проверить, что символы находятся в правильном диапазоне символов.
function isASCII(str) {
return /^[\x00-\x7F]*$/.test(str);
}
Или, если вы хотите использовать расширенный набор символов ASCII:
function isASCII(str, extended) {
return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(str);
}
Ответ 2
Для этого вам не нужен RegEx, просто проверьте, имеют ли все символы в этой строке код 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;
}
Ответ 3
Для ES2018, Regexp поддерживает экранирование свойств Unicode, вы можете использовать /[\p{ASCII}]+/u
для сопоставления символов ASCII. Это очень ясно сейчас.
Поддерживаемые браузеры:
- Хром 64+
- Safari/JavaScriptКорпус начинается в Safari Technology Preview 42