영숫자 만 허용하는 RegEx for Javascript


237

영숫자 만 허용하는 정규식을 찾아야합니다. 지금까지 내가 시도하는 모든 사람은 문자열이 영숫자 인 경우에만 작동합니다. 즉, 문자와 숫자가 모두 포함됩니다. 둘 중 하나를 허용하고 필요하지 않은 것을 원합니다.

답변:


512
/^[a-z0-9]+$/i

^         Start of string
[a-z0-9]  a or b or c or ... z or 0 or 1 or ... 9
+         one or more times (change to * to allow empty string)
$         end of string    
/i        case-insensitive

업데이트 (범용 문자 지원)

이 정규 표현식이 범용 문자를 지원 해야하는 경우 여기에서 유니 코드 문자 목록을 찾을 수 있습니다.

예를 들면 다음과 같습니다. /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/

페르시아어를 지원합니다.


50
[az]는 국제 문자와 일치하지 않습니다.
Eric Normand

23
와우-정규식이 이렇게 간단한 방식으로 분류 될 때까지 정규식을 완전히 이해했다고 생각하지 않습니다. 감사!
Matt Cashatt

문제-/ g가 없으면 줄 바꿈 전에 일치 항목 만 바꿉니다.
Volomike

5
다른 방법은 [^\W_]있지만 [a-z0-9]/ i는 확실한 방법입니다.
Vitim.us

36
@Greg, 정규식 관련 답변을 설명하는 방법이 좋습니다. 내 의견으로는 설명이없는 정규 표현식은 쓸모가 없습니다. 당신은 당신이 대신 실제로 정규식은 무엇 학습의 다른 사용 케이스를 잘 작성 다시 올를 변경해야하는 경우 한 시간이 갑자기 "그래 그것이 작동하는"것을 얻을 수 있기 때문에 않습니다 . 게다가, 당신은 정규식 문서를보다 쉽게 이해할 수있어 : P
크리스 Cirefice

147

교체 된 결과를 반환하려면 다음과 같이하십시오.

var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);

이것은 다음을 반환합니다.

Test123TEST

gi는 전역 (첫 번째 일치뿐만 아니라)을 의미하고 대소 문자를 구분하지 않기 때문에 필요하므로 a-zA-Z 대신 az가 있습니다. 그리고 괄호 안의 ^는 "이 괄호 안에없는 것"을 의미합니다.

경고 : 정확히 원하는 경우 영숫자가 좋습니다. 그러나 사람의 이름이나 지리적 영역과 같은 국제 시장에서이를 사용하는 경우 유니 코드 문자를 고려해야합니다. 예를 들어, "Âlvarö"와 같은 이름이 있으면 "lvar"가됩니다.


3
이것은 설명과 함께 큰 대답입니다. 필요한 경우 공백을 허용해야합니다. .replace (/ [^ a-z0-9 \] / gi, '')
Joe Johnston

82

단어 문자 클래스를 사용하십시오. 다음은 다음과 같습니다 ^[a-zA-Z0-9_]+$.

^\w+$

설명:

  • ^ 문자열의 시작
  • \ w 모든 단어 문자 (AZ, az, 0-9, _).
  • 문자열의 $ 끝

/[^\w]|_/g밑줄과 일치하지 않으려면 사용하십시오 .


20
\ w는 실제로 [a-zA-Z_0-9]와 동일하므로 RegEx도 밑줄 [_]과 일치합니다.
Martin Brown

거의 영숫자가 전혀 영숫자는 아니지만, 귀하의
답변

사실, 게시 된 Q에 대한 엄격한 답변이 아니라 내가 찾던 내용을 정확하게 대답했습니다.
프로토 타입

죄송합니다. Ä
Alex Mi

너무 나쁜 이것은 내 악센트를 제거
Miguel

38
/^([a-zA-Z0-9 _-]+)$/

위의 정규 표현식은 문자열 옆에 공백을 허용하고 특수 문자를 제한합니다. az, AZ, 0-9, Space, 밑줄 및 대시 만 허용합니다.


14
^\s*([0-9a-zA-Z]*)\s*$

또는 하나 이상의 문자를 원할 경우 :

^\s*([0-9a-zA-Z]+)\s*$

대괄호는 문자 집합을 나타냅니다. ^는 입력의 시작입니다. $는 입력 끝입니다 (또는 옵션에 따라 줄 바꿈). \ s는 공백입니다.

전후 공백은 선택 사항입니다.

괄호는 원하는 정보를 추출 할 수있는 그룹화 연산자입니다.

편집 : \ w 문자 집합의 잘못된 사용을 제거했습니다.


6

유효한 영숫자 문자열을 확인하는 대신 문자열에 유효하지 않은 문자가 있는지 확인하여 간접적으로이를 달성 할 수 있습니다. 유효한 영숫자 문자열 의 보완 과 일치하는 항목을 확인하여 수행 하십시오.

/[^a-z\d]/i    

예를 들면 다음과 같습니다.

var alphanumeric = "someStringHere";
var myRegEx  = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));

isValid문자열이 유효한지 여부가 아닌 거짓인지 테스트하고 있기 때문에 의 논리 not 연산자를 주목하십시오 .


6

이 작동합니다

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$

alphanumeriuc 문자 만 허용합니다.
테스트 사례는 다음과 같습니다.

dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid, 
abchfe   - invalid,
 abd()*  - invalid, 
42232^5$ - invalid

또는

이것도 시도해 볼 수 있습니다. 이 표현은 하나 이상의 숫자와 하나의 문자를 만족하며 다른 특수 문자는 만족하지 않았습니다

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$

각도에서 다음과 같이 테스트 할 수 있습니다.

$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);

플래너 데모

참조 : Angularjs에서 영숫자 정규 표현식


4

프로젝트 전반에 걸쳐 사용할 문자열 프로토 타입 확장

    String.prototype.alphaNumeric = function() {
        return this.replace(/[^a-z0-9]/gi,'');
    }

용법:

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay

3

이 코드를 SCRATCHPAD에 입력하고 동작을 확인하십시오.

var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');

2

많은 사용자가 우리가 영어로 엄격하게 작업하지 않는 한이 정규 표현식이 거의 확실하게 실패하는 것으로 나타났습니다. 그러나 나는 그렇게 제한되지 않는 쉬운 방법이 있다고 생각합니다.

  1. 대문자로 문자열을 복사하십시오
  2. 소문자로 두 번째 사본을 만들다

해당 문자열에서 일치하는 문자는 사실상 알파벳이 아닙니다.

let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
    let bIsAlphabetic = (copy1[i] != copy2[i]);
}

선택적으로 숫자 0에서 9까지만 찾아 숫자를 감지 할 수도 있습니다.


2

다음을 시도하십시오 ... 필드 ID를 #name으로 바꾸십시오 ... az (a ~ z), AZ (A ~ Z), 0-9 (0 ~ 9)

jQuery(document).ready(function($){
    $('#name').keypress(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9\s]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        e.preventDefault();
        return false;
    });
});

2

숫자, 알파벳 및 특수 문자 만 허용하는 Javascript

document.getElementById("onlynumbers").onkeypress = function (e) {
	onlyNumbers(e.key, e)
};

document.getElementById("onlyalpha").onkeypress = function (e) {
	onlyAlpha(e.key, e)
};

document.getElementById("speclchar").onkeypress = function (e) {
	speclChar(e.key, e)
};

function onlyNumbers(key, e) {
	var letters = /^[0-9]/g; //g means global
	if (!(key).match(letters)) e.preventDefault();
}

function onlyAlpha(key, e) {
	var letters = /^[a-z]/gi; //i means ignorecase
	if (!(key).match(letters)) e.preventDefault();
}

function speclChar(key, e) {
	var letters = /^[0-9a-z]/gi;
	if ((key).match(letters)) e.preventDefault();
}
<html>
   <head></head>
   <body>
      Enter Only Numbers: 
      <input id="onlynumbers" type="text">
      <br><br>
      Enter Only Alphabets: 
      <input id="onlyalpha" type="text" >
      <br><br>
      Enter other than Alphabets and numbers like special characters: 
      <input id="speclchar" type="text" >
   </body>
</html>


1

Gayan Dissanayake지적한 것 보다 훨씬 낫습니다 .

/^[-\w\s]+$/

이제 다음 ^[a-zA-Z0-9]+$과 같이 나타낼 수 있습니다^\w+$

공백 대신 \ s 를 사용할 수 있습니다 . 참고 \이들 공백의 관심과뿐만 아니라 하나 개의 공백 문자를합니다.


1

나는 유사한 문자열이 블랙 (BF19) - 6.2 인치 (2GB, 32 기가 바이트 ROM) 안드로이드 9.0 (1300 만 화소 + 2MP) + 800 만 화소 듀얼 SIM 4000MAH 4G LTE 스마트 폰 삼성 갤럭시 A10S를

아래는 내가 한 일입니다.

string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()

내가 허용 주목 ,._-후 사용 split()join()교체 ,-에 공간 -각각.

나는 다음과 같은 것을 얻었습니다 : samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20그것은 내가 원하는 것입니다.

더 나은 해결책이있을 수 있지만 이것이 나를 위해 잘 작동하는 것으로 나타났습니다.


0

이 상수를 저장

const letters = /^[a-zA-Z0-9]+$/

이제 부품 사용을 확인하기 위해 .match ()

const string = 'Hey there...' // get string from a keyup listner
let id = ''
// iterate through each letters
for (var i = 0; i < string.length; i++) {
  if (string[i].match(letters) ) {
    id += string[i]
  } else {
    // In case you want to replace with something else
    id += '-'  
  }
}
return id

-1

숫자, 알파벳, 특수 문자 만 허용하는 Jquery

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<body>
Enter Only Numbers: 
<input type="text" id="onlynumbers">
<br><br>
Enter Only Alphabets: 
<input type="text" id="onlyalpha">
<br><br>
Enter other than Alphabets and numbers like special characters: 
<input type="text" id="speclchar">

<script>
    $('#onlynumbers').keypress(function(e) {
      var letters=/^[0-9]/g; //g means global
      if(!(e.key).match(letters)) e.preventDefault();
	});
    
    $('#onlyalpha').keypress(function(e) {
      var letters=/^[a-z]/gi; //i means ignorecase
      if(!(e.key).match(letters)) e.preventDefault();
	});
    
    $('#speclchar').keypress(function(e) {
      var letters=/^[0-9a-z]/gi; 
      if((e.key).match(letters)) e.preventDefault();
	});
    </script>
</body>
</html>

**JQUERY to accept only NUMBERS , ALPHABETS and SPECIAL CHARACTERS **


<!DOCTYPE html>
    $('#onlynumbers').keypress(function(e) {
      var letters=/^[0-9]/g; //g means global
      if(!(e.key).match(letters)) e.preventDefault();
    });

    $('#onlyalpha').keypress(function(e) {
      var letters=/^[a-z]/gi; //i means ignorecase
      if(!(e.key).match(letters)) e.preventDefault();
    });

    $('#speclchar').keypress(function(e) {
      var letters=/^[0-9a-z]/gi; 
      if((e.key).match(letters)) e.preventDefault();
    });
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 

숫자 만 입력 :

알파벳 만 입력 : 알파벳

이외의 특수 문자와 같은 숫자를 입력하십시오.

</body>
</html>

1
jquery는 자바 스크립트가 아닙니다
rsm

네. 위의 코드가 작동하면 감사 코드 실행을 클릭하여 확인할 수 있습니다.
Pranav Bhat

jquery는 자바 스크립트 라이브러리입니다
Pranav Bhat

우리는 자바 스크립트 대신 jquery를 사용할 수 있습니다 :)
Pranav Bhat

나는 당신이 옳았다. 나는 자바 스크립트로 다른 것을 올렸다. 정말 감사합니다!
Pranav Bhat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.