Как проверить, является ли символ буквой в Javascript?

94

Я извлекаю символ в строке Javascript с помощью:

var first = str.charAt(0);

и я хотел бы проверить, действительно ли это письмо. Как ни странно, похоже, что в Javascript нет такой функции. По крайней мере, я не могу его найти.

Как я могу это проверить?

Жером Верстринж
источник
4
Создать номер и протестировать против NaN? Или просто isNan(first)я думаю.
Marc
6
@Marc Если бы этот символ был '-', например, ваш тест не показал бы, что это буква ...
Жером Верстринж
2
Дайте определение «буква»? Только английская альфа или что-то еще? Вы хотите внести в «черный список» или «в белый список»?
Уэсли Марч
3
@JVerstry не все знают Java. Разве вы не можете просто сказать нам, какие символы будут разрешены?
PeeHaa
1
Я вижу, что здесь много людей называют JS Java. JS и Java - это не одно и то же, даже близко. Один - по сути игрушка, другой - для создания сайтов.
Ian Wise

Ответы:

15

Я считаю, что этот плагин обладает теми возможностями, которые вам нужны: http://xregexp.com/plugins/ (ссылка на github: https://github.com/slevithan/xregexp )

С его помощью вы можете просто сопоставить все буквы юникода с \p{L}.

Прочтите заголовок этого исходного файла, чтобы узнать, какие категории он поддерживает: http://xregexp.com/plugins/xregexp-unicode-categories.js

безмакс
источник
1
Есть ли у вас опыт использования этого плагина в проектах, над которыми вы работали? (просто интересно, насколько надежна эта библиотека)
Адриан Би
голосование против, поскольку это, безусловно, плохой ответ на 2019 год
Питер
5
@Peter Не могли бы вы дать ссылку на ответ, который считаете подходящим для 2019 года? Я бы добавил ссылку на него в качестве редактирования своего ответа, если другое решение работает со всеми символами Unicode.
bezmax 05
146

Я не верю, что для этого есть встроенная функция. Но достаточно легко написать с регулярным выражением

function isLetter(str) {
  return str.length === 1 && str.match(/[a-z]/i);
}
ДжаредПар
источник
50
Код проверяет только, является ли символ одной из основных букв от a до z (очень немногие языки написаны с использованием только этих букв). Это сильно отличается от упомянутой функции Java.
Юкка К. Корпела
11
Вы по-прежнему можете использовать регулярное выражение и просто добавлять дополнительные детали по мере необходимости: str.match (/ [AZ | az | ü | é] / i); // и т. д.
Эли
может это работает? var char=str.toLowerCase(); return (char.length==1 && char>='a' && char<='z')
Ибо Ян
2
@YiboYang - нет, перешел по ссылке jsbin выше, изменил ее на свою и запустил, и получил следующее: «is 'u' - это буква? True» «is 'ü' это буква? False» «is 'à 'это буква? false "С вашим кодом.
Julix
3
Следует отметить, что на самом деле это не возвращает истину || ложь, как и следовало ожидать. Если strэто значение из az, оно возвращает это значение. В противном случае возвращается ноль. Если вам нужно, чтобы он возвращал истину / ложь, используйте это. isLetter: function (str) { if (str.length !== 1 && str.match(/[a-z]/i)) { return true; } return false; },
Regis
107

Что касается тех специальных символов, которые не учитываются более простыми проверками, такими как /[a-zA-Z]/.test(c), может быть полезно использовать преобразование регистра ECMAScript ( toUpperCase). Он будет учитывать не-ASCII классы символов Unicode некоторых иностранных алфавитов.

function isLetter(c) {
  return c.toLowerCase() != c.toUpperCase();
}

ПРИМЕЧАНИЕ: это решение будет работать только для большинства латинских, греческих, армянских и кириллических шрифтов. Он НЕ будет работать для китайского, японского, арабского, иврита и большинства других шрифтов.

филипп
источник
15
Умная. Но, судя по моему очень ограниченному пониманию, он не работает с алфавитами, в которых нет верхнего и нижнего регистра, такими как китайский или японский
Нотр
3
отличный (и умный) код. Работает со всеми латинскими алфавитами.
fvlinden 09
1
Лично мне нравятся такие функции, потому что на них гораздо проще взглянуть и понять, чем функции регулярных выражений
Джаве
3
гениальное решение. В случае c = '1a' просто разделите вашу строку на массив и цикл, например, `function isLetters (arr) {for (var i = 0; i <arr.length; i ++) {if (arr [i]. toLowerCase ()! = arr [i] .toUpperCase ()) {} else {return false; }} return true; } `
Ронни Ройстон
5
По сравнению с решением, основанным на /[a-z]/iшаблоне, этот трюк допускает полный диапазон латинских символов. По сравнению с другим решением, содержащим полное отображение верхнего и нижнего латиницы в Юникоде, вы экономите 99,2% в размере кода. Было бы ошибкой называть это решение «неправильным», потому что оно зависит от вашей проблемы. Если ваша область действия представляет собой набор латинских символов, это простой и элегантный способ решить эту проблему.
filip
28
if( char.toUpperCase() != char.toLowerCase() ) 

Вернет true только в случае письма

Как указано в комментарии ниже, если ваш персонаж не является английским, High Ascii или двухбайтовый диапазон, вам необходимо добавить проверку на кодовую точку.

if( char.toUpperCase() != char.toLowerCase() || char.codePointAt(0) > 127 )
Шумер
источник
1
просто чтобы добавить два пенса, при превращении его в функцию добавьте проверку, является ли это строкой, и установите длину равной единице или убедитесь, что длина равна единице. 1aНапример , чтобы предотвратить .
revelt
1
@AnchovyLegend Это работает, потому что нет прописных и строчных версий чисел, знаков препинания и других неалфавитных символов. Другими словами, верхний и нижний регистры у них будут одинаковыми, а верхний и нижний регистры букв будут разными. Лично мне нравится эта техника, потому что она не зависит от языка (работает с языками с диакритическими знаками). Я не проводил никаких тестов, но предполагаю, что это более эффективно, чем создание регулярного выражения. (Но я могу ошибаться, поскольку регулярные выражения удивительно быстрые.)
Дэниел «Dang» Гриффит
2
Это не работает для скриптов, которые не различают верхний и нижний регистр, например китайский.
Майкл Шмид
@MichaelSchmid, мы можем добавить проверку кодовой точки, скажем "a" .codePointAt (0) .toString (16). Кодовая точка должна быть больше 127.
Шумер,
2
@ Сумер, почему это поможет? То, что кодовая точка выше 127, не означает, что это буква.
Майкл Шмид,
6

ES6 поддерживает регулярные выражения с поддержкой Unicode.

RegExp(/^\p{L}/,'u').test(str)

Это работает для всех алфавитов.

К сожалению, в Firefox есть ошибка (будет исправлена ​​в версии 78), которая не позволяет использовать его повсеместно. Но если вы можете управлять своей средой выполнения и она поддерживает ее (например, Node.js), это простое и комплексное решение.

По сути, XRegExp предоставляет полифил современного регулярного выражения для всех браузеров.

Майкл Шмид
источник
4

Как насчет использования кодов ASCII?

let n = str.charCodeAt(0);
let strStartsWithALetter = (n >= 65 && n < 91) || (n >= 97 && n < 123);
fmg
источник
1
Отлично работает в маловероятном случае, когда вы обрабатываете только английские тексты. (Предположение, которое неверно почти для каждой системы.)
Майкл Шмид,
Когда символы легко читаются (как здесь), запись кодов Ascii или Unicode (например, 65 вместо «A») - плохая практика, потому что они нечитаемы. См. Другие ответы о том, как правильно это написать.
Филипп-Андре Лорин,
2

Это решение работает с специальными символами тоже, например é, è, ê, ü, ö,à

2 шага:

  1. Удалите акценты, основываясь на этом ответе: Удалите акценты / диакритические знаки в строке в JavaScript.
  2. Проверьте, используется ли символ от a до z, используя регулярное выражение или юникод (на ваш выбор)

Живые демонстрации моего решения:

  1. с использованием глобальных функций
  2. с использованием шаблона модуля javascript

Примечание . Я опубликовал решение, использующее глобальные функции, поскольку оно, вероятно, является наиболее простым для понимания. Но если вам нужен более качественный код (чище, проще в обслуживании и расширении), обязательно посмотрите «шаблон модуля javascript» , см. Amazingwebs.com/my-current-javascript-design-pattern, а также это видео на YouTube (презентация Пола Айриша).

var defaultDiacriticsRemovalap = [
    {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
    {'base':'AA','letters':'\uA732'},
    {'base':'AE','letters':'\u00C6\u01FC\u01E2'},
    {'base':'AO','letters':'\uA734'},
    {'base':'AU','letters':'\uA736'},
    {'base':'AV','letters':'\uA738\uA73A'},
    {'base':'AY','letters':'\uA73C'},
    {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
    {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
    {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
    {'base':'DZ','letters':'\u01F1\u01C4'},
    {'base':'Dz','letters':'\u01F2\u01C5'},
    {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
    {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
    {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
    {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
    {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
    {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
    {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
    {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
    {'base':'LJ','letters':'\u01C7'},
    {'base':'Lj','letters':'\u01C8'},
    {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
    {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
    {'base':'NJ','letters':'\u01CA'},
    {'base':'Nj','letters':'\u01CB'},
    {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
    {'base':'OI','letters':'\u01A2'},
    {'base':'OO','letters':'\uA74E'},
    {'base':'OU','letters':'\u0222'},
    {'base':'OE','letters':'\u008C\u0152'},
    {'base':'oe','letters':'\u009C\u0153'},
    {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
    {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
    {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
    {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
    {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
    {'base':'TZ','letters':'\uA728'},
    {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
    {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
    {'base':'VY','letters':'\uA760'},
    {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
    {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
    {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
    {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
    {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
    {'base':'aa','letters':'\uA733'},
    {'base':'ae','letters':'\u00E6\u01FD\u01E3'},
    {'base':'ao','letters':'\uA735'},
    {'base':'au','letters':'\uA737'},
    {'base':'av','letters':'\uA739\uA73B'},
    {'base':'ay','letters':'\uA73D'},
    {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
    {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
    {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
    {'base':'dz','letters':'\u01F3\u01C6'},
    {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
    {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
    {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
    {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
    {'base':'hv','letters':'\u0195'},
    {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
    {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
    {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
    {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
    {'base':'lj','letters':'\u01C9'},
    {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
    {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
    {'base':'nj','letters':'\u01CC'},
    {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
    {'base':'oi','letters':'\u01A3'},
    {'base':'ou','letters':'\u0223'},
    {'base':'oo','letters':'\uA74F'},
    {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
    {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
    {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
    {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
    {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
    {'base':'tz','letters':'\uA729'},
    {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
    {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
    {'base':'vy','letters':'\uA761'},
    {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
    {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
    {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
    {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
];

var diacriticsMap = {};
for (var i=0; i < defaultDiacriticsRemovalap.length; i++){
    var letters = defaultDiacriticsRemovalap[i].letters.split("");
    for (var j=0; j < letters.length ; j++){
        diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
    }
}

function removeDiacriticFromChar (char) {
    return diacriticsMap[char] || char; 
}


/*
 *  [1] Remove the accent, based on answer of /programming/990904/javascript-remove-accents-in-strings
 *  [2] Check if a to z character, using regex or unicode (your choice, here using regex)
 *
 */
function isLetter(char) {
  var charWithoutAccent = removeDiacriticFromChar(char);  /* [1] */
  return charWithoutAccent.match(/[a-z]/i);               /* [2] */
}

console.log( "is 'u' is a letter? " + (isLetter('u') ? 'true' : 'false') );
console.log( "is 'ü' is a letter? " + (isLetter('ü') ? 'true' : 'false') );
console.log( "is 'à' is a letter? " + (isLetter('à') ? 'true' : 'false') );
console.log( "is 'ö' is a letter? " + (isLetter('ö') ? 'true' : 'false') );
console.log( "is 'ù' is a letter? " + (isLetter('ù') ? 'true' : 'false') );
console.log( "is 'é' is a letter? " + (isLetter('é') ? 'true' : 'false') );
console.log( "is 'é' is a letter? " + (isLetter('é') ? 'true' : 'false') );
console.log( "is 'ê' is a letter? " + (isLetter('ê') ? 'true' : 'false') );

Адриан Бе
источник
6
Похоже, он не работает с китайскими или японскими иероглифами
Нотр
9
это как сказать, что небо голубое
Адриан Би
1

Я публикую здесь, потому что не хотел задавать новый вопрос. Предполагая, что в коде нет объявлений с одним символом, вы можете использовать eval () для символа, чтобы вызвать ошибку и проверить тип символа. Что-то типа:

function testForLetter(character) {
  try {
    //Variable declarations can't start with digits or operators
    //If no error is thrown check for dollar or underscore. Those are the only nonletter characters that are allowed as identifiers
    eval("let " + character + ";");
    let regExSpecial = /[^\$_]/;
    return regExSpecial.test(character);
  } catch (error) {
    return false;
  }
}

console.log(testForLetter("!")); //returns false;
console.log(testForLetter("5")); //returns false;
console.log(testForLetter("ن")); //returns true;
console.log(testForLetter("_")); //returns false;

Дидаков
источник
Если ваш тест вернет истину для подчеркивания, то это бесполезно.
Jérôme Verstrynge
Это представляет потенциальную угрозу безопасности внедрения кода. Используйте только с осторожностью, если вообще используйте.
Майкл Шмид,
0

Можно узнать, является ли символ буквой или нет, используя стандартную встроенную функцию isNaN или Number.isNaN () из ES6:

isNaN('s') // true
isNaN('-') // true
isNaN('32') // false, '32' is converted to the number 32 which is not NaN

Он возвращает true, если данное значение не является числом, в противном случае - false.

Алекса-905
источник
Умно, но я не уверен, что это достаточный ответ ... Кроме того, Марк предложил это в комментариях ...
Гаррет Моцнер
var sn = "строка indijf &"; var nn = isNaN (sn) document.getElementById («демонстрация»). innerHTML = nn; Я передаю числа или специальные символы, которые все равно возвращаются. не могли бы вы добавить более подробные ответы
Mr S Coder
В каком алфавите есть «-» буква?
Майкл Шмид,
-1
// to check if the given string contain alphabets    
function isPangram(sentence){
        let lowerCased = sentence.toLowerCase();
        let letters = "abcdefghijklmnopqrstuvwxyz";
        // traditional for loop can also be used
        for (let char of letters){
            if (!lowerCased.includes(char)) return false;
        }
        return true;
    }
Рошан Риджал
источник
1
В настоящее время Unicode насчитывает 128 000 символов, охватывающих 135 алфавитов. Эти 26 - действительно небольшая часть из них.
Майкл Шмид
-1

Я сделал для этого функцию:

var isLetter = function (character) {
  if( (character.charCodeAt() >= 65 && character.charCodeAt() <= 90) || (character.charCodeAt() >= 97 && character.charCodeAt() <= 122) ) {
    return true;
  }
  else{
    return false;
  }
}

Это в основном проверяет в таблице ASCII, относится ли код символа к Букве.

Вы можете увидеть таблицу ASCII по этой ссылке и сравнить столбцы DEC (где это код) и символ : https://www.ascii-code.com/

Примечание. Моя функция верна только для «простых» букв (например, «Á», «é», «ç», «Ü», она вернет false ... но при необходимости вы можете адаптировать эту функцию к другим условиям ).

ПедроПрограммист
источник
-1

Итак, мы получили первый символ с помощью charArt()функции, а затем попытаемся сопоставить ir, используя регулярное выражение, чтобы проверить, есть ли буква в нижнем регистре, начиная с a до z, и вернуть ее результаты какboolean

Boolean('#Foo'.charAt(0).match(/[a-zA-Z]/)) // false
Boolean('Foo'.charAt(0).match(/[a-zA-Z]/)) // true
FDisk
источник
Не могли бы вы дать краткое объяснение или описание Кодекса? Ответы только на код не приветствуются.
Ниманта
-1

Мы также можем проверить простым способом:

function isLetter(char){
    return ( (char >= 'A' &&  char <= 'Z') ||
             (char >= 'a' &&  char <= 'z') );
}


console.log(isLetter("a"));
console.log(isLetter(3));
console.log(isLetter("H"));

Ганеш Фирке
источник