영숫자 만 허용하는 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.