자바 스크립트 분할 정규식 질문


116

안녕하세요 Javascript에서 다소 쉬운 정규식이라고 생각한 것을 시도하고 있지만 많은 문제를 일으키고 있습니다. '-', '.', '/'및 ''로 자바 스크립트 분할을 통해 날짜를 분할하는 기능을 원합니다.

var date = "02-25-2010";
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2);

이것에 대한 올바른 정규식은 무엇이며 모든 도움이 될 것입니다.

답변:


174

문자 클래스 에 분할하려는 문자를 넣어야합니다.이 문자 는 정규 표현식 엔진에 "이 문자 중 하나라도 일치합니다"라고 알려줍니다. 목적에 따라 다음과 같이 표시됩니다.

date.split(/[.,\/ -]/)

대시는 문자 클래스에서 범위 지정자 (즉 [a-z],와 같은 의미)로 특별한 의미를 갖지만 클래스 [abcdefghijklmnopqrstuvwxyz]의 마지막 항목으로 넣으면 리터럴 대시를 의미하는 것으로 간주되며 이스케이프 할 필요가 없습니다.

패턴이 작동하지 않는 이유를 설명하기 위해 /-./는 리터럴 대시 문자 다음에 임의의 문자를 일치 시키도록 정규식 엔진에 지시합니다 ( 은 정규식에서 와일드 카드 문자입니다). "02-25-2010"을 사용하면 대시가 일치하고 점이 "2"와 일치하기 때문에 "-2"가 나타날 때마다 분할됩니다.


3
또한 점 문자 클래스 내에서 특별한 의미 가 없다는 것을 언급 할 수 있습니다 . 와일드 카드 문자로 작동하는 대신 (이해할 수없는) 리터럴로 작동합니다.
바비 잭

11

또는 그냥 (숫자를 제외한 모든 것) :

date.split(/\D/);

6

당신은 그냥 사용할 수 있습니다

date.split(/-/);

또는

date.split('-');

1
코드 앞에 줄 바꿈을 넣으면 4 개의 공백이 올바르게 형식을 지정합니다.
Brandon

5

그런 다음 숫자가 아닌 다른 것으로 분할합니다.

date.split(/[^0-9]/);

3

문자열이 다음과 같다고 말하십시오.

let str = `word1
word2;word3,word4,word5;word7
word8,word9;word10`;

다음 구분 기호로 문자열을 분할하려고합니다.

  • 콜론
  • 세미콜론
  • 새로운 라인

다음과 같이 문자열을 분할 할 수 있습니다.

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

마지막으로 배열의 요소를 트리밍해야 할 수 있습니다.

let elements = rawElements.map(element => element.trim());

0

또는 날짜 문자열 2015-05-20 또는 2015.05.20에만 사용하십시오.

date.split(/\.|-/);

-1

대신 이것을 시도하십시오

date.split (/ \ W + /)


이전에 게시 된 5+보다 이것이 더 나은 답변 인 이유를 설명해 주시겠습니까? 그리고 실제로 어떻게 작동합니까?
mjuarez

이것은 실제로 모든 답변 중에서 가장 잘 작동했습니다.
reectrix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.