[javascript] 영숫자 만 허용하는 RegEx for Javascript

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



답변

/^[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 _.-]+)$/

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


답변

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

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

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

Test123TEST

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

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


답변

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

^\w+$

설명:

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

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


답변

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

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


답변

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

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

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

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

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

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

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


답변

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

/[^a-z\d]/i    

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

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

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


답변

이 작동합니다

^(?=.*[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에서 영숫자 정규 표현식