Javascript에서 문자가 문자인지 확인하는 방법은 무엇입니까?


94

다음을 사용하여 Javascript 문자열에서 문자를 추출하고 있습니다.

var first = str.charAt(0);

편지인지 확인하고 싶어요. 이상하게도 이러한 기능이 Javascript에 존재하지 않는 것 같습니다. 적어도 나는 그것을 찾을 수 없습니다.

어떻게 테스트 할 수 있습니까?


4
번호를 생성하고 NaN? 아니면 그냥 isNan(first)추측합니다.
Marc

6
@Marc이 문자가 있었다 '-'인 경우, 예를 들어, 테스트는 편지 ...임을 표시하지 않을
제롬 Verstrynge가

2
"편지"를 정의 하시겠습니까? 영어 알파 만 아니면 다른 것? "블랙리스트"또는 "화이트리스트"를 원하십니까?
Wesley Murch 2012 년

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
작업 한 프로젝트에서이 플러그인을 사용한 경험이 있습니까? (이 라이브러리가 얼마나 신뢰할 수 있는지 궁금합니다.)
Adrien Be

이것은 확실히 2019에 대한 잘못된 대답이기 때문에 downvoting
Peter

5
@Peter 2019 년에 적합하다고 생각되는 답변을 연결해 주시겠습니까? 다른 솔루션이 모든 유니 코드 문자와 함께 작동하는 한 내 대답에 대한 편집으로 링크를 추가합니다.
bezmax

146

나는 그것에 대한 내장 기능이 있다고 생각하지 않습니다. 그러나 정규식으로 작성하는 것은 쉽습니다.

function isLetter(str) {
  return str.length === 1 && str.match(/[a-z]/i);
}

50
이 코드는 문자가 a부터 z까지의 기본 문자 중 하나인지 여부 만 테스트합니다 (이러한 문자 만 사용하여 작성된 언어는 거의 없음). 이것은 언급 된 Java 기능과 매우 다릅니다.
Jukka K. Korpela 2012 년

10
여전히 정규식을 사용하고 필요에 따라 세부 정보를 추가 할 수 있습니다. str.match (/ [AZ | az | ü | é] / i); // etc
Eli

이게 작품일까요? var char=str.toLowerCase(); return (char.length==1 && char>='a' && char<='z')
Yibo Yang

2
@YiboYang-아니요, 위의 jsbin 링크로 이동하여 귀하의 것으로 변경하고 실행 한 후 다음과 같은 결과를 얻었습니다. " 'u'는 문자입니까? 참" " 'ü'는 문자입니까? 거짓" "은 'à 'is a letter? false "코드와 함께.
Julix

3
이것은 실제로 true를 반환하지 않는다는 점에 유의해야합니다 || 예상대로 거짓. straz의 값 이면 해당 값을 반환합니다. 그렇지 않으면 null을 반환합니다. true / false를 반환하는 데 필요한 경우 이것을 사용하십시오. 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 유니 코드 문자 클래스를 고려합니다.

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

참고 :이 솔루션은 대부분의 라틴어, 그리스어, 아르메니아어 및 키릴 문자에서만 작동합니다. 중국어, 일본어, 아랍어, 히브리어 및 대부분의 기타 스크립트에서는 작동하지 않습니다.


15
영리한. 그러나 나의 매우 제한된 이해를 바탕으로 중국어 또는 일본어와 같이 대문자와 소문자가없는 알파벳에서는 작동하지 않습니다
Notre

3
훌륭하고 영리한 코드. 모든 라틴 기반 알파벳과 함께 작동합니다.
fvlinden

1
개인적으로 저는 이와 같은 함수를 좋아합니다. 정규식 함수보다보고 이해하기가 훨씬 쉽기 때문에
Djave

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; }`
Ronnie Royston

5
/[a-z]/i패턴을 기반으로 한 솔루션과 비교할 때이 트릭은 라틴 문자의 전체 범위를 허용합니다. 완전한 라틴 유니 코드 상하 매핑을 포함하는 다른 솔루션에 비해 코드 크기가 99.2 % 절약됩니다. 문제에 따라 다르기 때문에이 솔루션을 "잘못"이라고 부르는 것은 잘못된 것입니다. 범위가 라틴 문자 집합 인 경우이 문제를 해결할 수있는 간결하고 우아한 방법입니다.
필립

28
if( char.toUpperCase() != char.toLowerCase() ) 

편지의 경우에만 true를 반환합니다.

아래 주석에서 지적했듯이 문자가 영어가 아닌 경우, High Ascii 또는 2 바이트 범위이면 코드 포인트 확인을 추가해야합니다.

if( char.toUpperCase() != char.toLowerCase() || char.codePointAt(0) > 127 )

1
2 펜스를 추가하기 위해 함수로 바꾸면 문자열인지 확인하고 길이를 1로 강제하거나 길이가 1인지 확인하십시오. 1a예를 들어 그것은 방지하기 위한 것입니다.
revelt

1
@AnchovyLegend 숫자, 구두점 및 기타 비 알파벳 문자의 대문자 및 소문자 버전이 없기 때문에 작동합니다. 즉, 대문자와 소문자는 동일하지만 대문자와 소문자는 다릅니다. 개인적으로 저는이 기법이 언어와 무관하기 때문에 좋아합니다 (분음 부호가있는 언어에서 작동 함). 나는 벤치 마크를 실행하지 않았지만 이것이 정규식을 구축하는 것보다 더 효율적이라고 생각합니다. (하지만 정규식이 놀랍도록 빠르기 때문에 틀릴 수 있습니다.)
Daniel 'Dang'Griffith

2
이것은 중국어와 같이 대문자와 소문자를 구별하지 않는 스크립트에서는 실패합니다.
Michael Schmid

@MichaelSchmid, "a".codePointAt (0) .toString (16)이라는 코드 포인트 검사를 추가 할 수 있습니다. 코드 포인트는 127보다 커야합니다.
Sumer

2
@Sumer, 그게 왜 도움이 될까요? 코드 포인트가 127 이상이라고해서 문자가 아닙니다.
Michael Schmid

6

ES6는 유니 코드 인식 정규식을 지원합니다.

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

이것은 모든 알파벳에 적용됩니다.

안타깝게도 Firefox에는 (버전 78에서 수정 될 예정) 버그 가있어 이것이 보편적으로 사용되지 못하게합니다. 그러나 런타임 환경을 제어 할 수 있고 지원하는 경우 (예 : Node.js) 이것은 간단하고 포괄적 인 솔루션입니다.

Atlernatively, XRegExp는 모든 브라우저에 현대적인 정규 표현식의 polyfill을 제공합니다.


4

ASCII 코드를 사용하는 것은 어떻습니까?

let n = str.charCodeAt(0);
let strStartsWithALetter = (n >= 65 && n < 91) || (n >= 97 && n < 123);

1
영어 텍스트 만 처리하는 경우에 완벽하게 작동합니다. (거의 모든 시스템에 대해 잘못된 가정)
Michael Schmid

문자가 읽기 쉬운 경우 (여기에서와 같이) Ascii 또는 유니 코드 코드 (예 : 'A'대신 65)를 작성하는 것은 읽을 수 없기 때문에 나쁜 습관입니다. 이것을 올바르게 작성하는 방법은 다른 답변을 참조하십시오.
Philippe-André Lorin

2

이 솔루션은 작동 특수 문자 예를 들어,도 é, è, ê, ü, ö,à

2 단계 :

  1. 이 답변에 따라 악센트를 제거하십시오. JavaScript의 문자열에서 악센트 / 분음 부호 제거
  2. 정규식 또는 유니 코드 (선택 사항)를 사용하여 a에서 z 문자인지 확인합니다.

내 솔루션의 라이브 데모 :

  1. 전역 함수 사용
  2. 자바 스크립트 모듈 패턴 사용

참고 : 아마도 이해하기 가장 간단하기 때문에 전역 함수를 사용하는 솔루션을 게시했습니다. 그러나 더 나은 코드 (더 깨끗하고 유지 관리 및 확장)를 원한다면 "자바 스크립트 모듈 패턴"을 살펴 보십시오. 인상적 webs.com/my-current-javascript-design-pattern이 YouTube 비디오 (Paul Irish 발표 )를 참조하십시오 .

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
중국어 또는 일본어 문자와 작동하지 않는 것 같습니다
Notre

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;


테스트가 밑줄에 대해 true를 반환하면 유용하지 않습니다.
Jérôme Verstrynge

이로 인해 코드 삽입의 잠재적 인 보안 위협이 발생합니다. 주의해서 만 사용하십시오.
Michael Schmid

0

ES6 의 표준 내장 함수 isNaN 또는 Number.isNaN () 을 사용하여 문자가 문자인지 아닌지 알 수 있습니다 .

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

주어진 값이 숫자가 아니면 참, 그렇지 않으면 거짓으로 되돌립니다.


영리하지만 충분한 대답인지 모르겠습니다 ... 또한 Marc는 의견에서 이것을 제안했습니다 ...
Garrett Motzner

var sn = "문자열 indijf &"; var nn = isNaN (sn) document.getElementById ( "demo"). innerHTML = nn; 숫자를 전달하거나 특수 문자가 여전히 true를 반환합니다. 더 자세한 답변을 추가해 주시겠습니까?
Mr S Coder

어떤 알파벳이“-”문자입니까?
Michael Schmid

-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
유니 코드는 현재 135 개의 알파벳을 포함하는 128 000 개의 문자를 가지고 있습니다. 그 26 개는 정말 작은 부분 집합입니다.
Michael Schmid

-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까지 소문자로 시작하는 문자가 있는지 확인하고 결과를 aboolean

Boolean('#Foo'.charAt(0).match(/[a-zA-Z]/)) // false
Boolean('Foo'.charAt(0).match(/[a-zA-Z]/)) // true

강령에 대한 간략한 설명이나 설명을 제공 할 수 있습니까? 코드 전용 답변은 권장되지 않습니다.
Nimantha

-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"));

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.