[javascript] 영숫자, 대시 및 밑줄 (공백 없음) 정규식 확인 JavaScript

정규식에 대해 입력을 확인하려고합니다.

필드는 영숫자 문자, 대시 및 밑줄 만 허용해야하며 공백은 허용하지 않아야합니다.

그러나 아래 코드는 공백을 허용합니다.

내가 무엇을 놓치고 있습니까?

var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
    { alert('invalid'); }
else
    { alert('valid'); }



답변

그러나 아래 코드는 공백을 허용합니다.

아니요, 그렇지 않습니다. 그러나 길이가 1 인 입력에서만 일치합니다. 길이가 1보다 크거나 같은 입력의 경우 +다음 문자 클래스 가 필요합니다 .

var regexp = /^[a-zA-Z0-9-_]+$/;
var check = "checkme";
if (check.search(regexp) === -1)
    { alert('invalid'); }
else
    { alert('valid'); }

참고 그 어느 것도 -(이 경우)이나 _필요 탈출.


답변

부울 값에만 관심이 있다면 String.match/abc/.test("abcd") 대신 RegExp.prototype.test (예 : String.search () 대신)를 사용 하면 안됩니다 . Andy E의 답변에 설명 된대로 캐릭터 클래스를 반복해야합니다.

var regexp = /^[a-zA-Z0-9-_]+$/;


답변

이 구문은이 시점에 게시 된 답변보다 약간 더 간결하며 동일한 결과를 얻습니다.

let regex = /^[\w-]+$/;


답변

어리석은 오류가 있습니다. 누군가 유용하다고 생각되면 여기에 게시하십시오.

  1. -\._ -하이픈, 점 및 밑줄을 의미합니다.
  2. \.-_ -점에서 밑줄까지 범위의 모든 기호를 의미합니다.


답변

밑줄을 벗어나지 마십시오. 약간 엉망이 될 수 있습니다.


답변

이 시도

"[A-Za-z0-9_-]+"

밑줄과 하이픈을 허용해야합니다.


답변

이것을 시도하십시오, 그것은 나를 위해 잘 작동합니다.

"^([a-zA-Z])[a-zA-Z0-9-_]*$"