2013-02-19 6 views
1

정규식에 대한 처리가 있다고 생각하면됩니다. 모든 것이 취소됩니다. 영숫자와 공백 문자 이외의 것이 발견되면 거짓 체크를 반환하기를 원합니다.공백 정규 표현식을 사용하는 영숫자

function checkName(fname) 
{ 
    var rexp = new RegExp(/[^a-zA-Z0-9]\s/gim) 
    if (!rexp.test(fname)) 
    { 
     alert ("'" + fname + "'\nis okay") 
    } 
    else 
    { 
     alert ("'" + fname + "'\nis NOT okay") 
    } 
    return !rexp.test(fname) 
} 
나는 위의 코드는 다음과

  • 에 대한 반환 것을 희망

    "이것은 괜찮습니다"-

  • "이것은 확인을하지 않습니다"사실
  • -false "아니다이다 이 Ok! " -false
  • "아니다 \입니다" "이 확인 -
+0

* RegExp 생성자 * 또는 * 정규식 리터럴 중 하나만 사용하십시오. 둘 다 사용할 수는 없습니다. – Bergi

답변

2

, 모든 반전 다음 문자 클래스를 반전하고있는 점을 놓치고있는 것 같다 귀하의 기능에 결과. 이것은 논리적으로 읽기가 어렵습니다. 당신은 또한 좋은 이유에 대한 정규식에 대한 두 가지 테스트를 수행합니다. 이 같은 많은 청소기 무언가 :

function checkName(fname) { 
    var result = /^[a-z0-9\s]+$/i.test(fname) 

    if (result) { 
     alert ("'" + fname + "'\nis okay") 
    } else { 
     alert ("'" + fname + "'\nis NOT okay") 
    } 
    return result; 
} 

업데이트 : 그것은 이러한 점을 너무 캡처 잭의 편집처럼 보인다. (항상 늦은 시간과 짧은 니켈 ...)

1

몇 가지 거짓.

  1. /something/new RegExp('something')에 대한 짧은 표기법, 당신은 최대를 혼합해서는 안

  2. 문자 클래스 내에서 \s을 이동해야합니다. 그렇지 않으면 영숫자가 아니며 문자 뒤에 공백이있는 문자를 찾습니다.

  3. , 당신은 문자 클래스에서 A-Z 또는 a-z을 제거하면
  4. /i 사용할 수 있습니다, 당신은 당신의 발현 앵커가있는 경우

    1. /m에만 유용합니다 :
    2. 난 당신이 모든 수정이 필요하다고 생각하지 않습니다

    3. /g은 여러 번 일치해야하는 경우에만 유용하지만, 첫 번째로 일치하면 충분합니다.

전체 기능

var rexp = /[^a-zA-Z0-9\s]/; 
는 다음과 같이 쓸 수있다 :

function checkName(fname) 
{ 
    return !/[^a-zA-Z0-9\s]/.test(fname); 
} 

대신 더블 네거티브 필름을 사용하여, "단지 이러한 문자 허용"말을 더 나은 것 :

function checkName(fname) 
{ 
    return /^[a-zA-Z0-9\s]*$/.test(fname); 
} 

비어 있지 않은 이름도 테스트해야하는 경우 /^[a-zA-Z0-9\s]+$/을 사용해야합니다.

+0

@downvoter 심각하게? 이 답변에 대한 잘못된 점은 무엇입니까? –

+1

나는 downvoter 아니었지만, 나는이 답변을 훨씬 더 잘 편집하고 있습니다. –

1
[^a-zA-Z0-9]\s 

정규식에는 문자/숫자 뒤에 공백이 있어야합니다.

수정하려면 괄호 안에 \s을 옮기십시오.

그래도 한 가지 더해야합니다. 정규식은이 문자 중 중 하나만 일치시킵니다. 하나 또는 그 이상과 일치하도록 +을 추가하십시오.따라서

, 고정 정규식 :

[^a-zA-Z0-9\s]+ 
+0

표현식의 의미가 반대였습니다. 즉, '잘못된'세트에 적어도 하나의 문자가있는 경우 값을 거부합니다. 당신의 답이 무엇을 할 지 확신하지 못합니다. 그러나 맞습니다. –

+0

@Jack OP에서 "알파 숫자와 공백 문자가 아닌 것"이라고 말했습니다. – Doorknob

+0

예, "이외의 문자"는 알파가 아닌 문자가 없음을 의미합니다. :) 나는 더블 네거티브가 크지 않다는 것에 동의하지만 그렇다고하더라도 당신의 표현은 정박되어야합니다 ... 그렇기 때문에 Will.i.am과 같은 대답이 될 것입니다 :) –

0

시도 : 토론의 대부분은 잘하지만

function checkName(fname) 
{ 
    var rexp = new RegExp(/^[a-z0-9\s]+$/i) 
    if (!rexp.test(fname)) 
    { 
     alert ("'" + fname + "'\nis okay") 
    } 
    else 
    { 
     alert ("'" + fname + "'\nis NOT okay") 
    } 
    return !rexp.test(fname) 
} 
+0

아마도 당신은 표현을 뒤집어 놓고 그것을 고정 시켰다고 설명해야한다. 이 경우'if' 조건을 바꾸어야합니다. –

관련 문제