/ \ s / g와 / \ s + / g 사이에 차이가 있습니까?
공백 문자가 포함 된 문자열이있는 경우 :
var str = ' A B C D EF ';
그리고 우리는 문자열에서 공백을 제거하고 싶습니다 (원하는 :) 'ABCDEF'
.
둘 다 :
str.replace(/\s/g, '')
이:
str.replace(/\s+/g, '')
올바른 결과를 반환합니다.
이것은이 +
상황에서 불필요 하다는 것을 의미합니까 ? 이 상황에서이 두 정규식간에 차이가 있습니까 (예 : 어떤 식 으로든 다른 결과를 생성 할 수 있음)?
업데이트 : 성능 비교- /\s+/g
더 빠릅니다. 여기를 참조하십시오 : http://jsperf.com/s-vs-s
첫 번째 정규식에서 각 공백 문자 는 한 문자 씩 빈 문자열로 대체됩니다.
두 번째 정규식에서 각 연속 공백 문자 문자열은 +
.
그러나 0에 다른 것을 곱한 것과 마찬가지로 두 방법 모두 정확히 같은 방식으로 공백을 제거하는 것처럼 보입니다.
대체 문자열을로 변경하면 '#'
차이가 훨씬 더 명확 해집니다.
var str = ' A B C D EF ';
console.log(str.replace(/\s/g, '#')); // ##A#B##C###D#EF#
console.log(str.replace(/\s+/g, '#')); // #A#B#C#D#EF#
\s
"하나의 공백"을 \s+
의미하고 "하나 이상의 공백"을 의미합니다.
그러나 /g
플래그 (모든 항목 교체)를 사용하고 빈 문자열로 교체하기 때문에 두 표현식은 동일한 효과를 갖습니다.
일치 상황에서 첫 번째는 공백 당 하나의 일치를 반환하고 두 번째는 각 공백 그룹에 대한 일치를 반환합니다.
빈 문자열로 바꾸므로 결과는 동일합니다. 예를 들어 'x'로 바꾸면 결과가 달라집니다.
str.replace(/\s/g, '')
'xxAxBxxCxxxDxEF'를 반환합니다.
동안 str.replace(/\s+/g, '')
'xAxBxCxDxEF'를 반환합니다.
때문에 \s
'X'와 각각 일치하는 각 교체 공백, 및 \s+
하나의 'X'여러 순차 공백 교체 공백의 일치 그룹.
+
"하나 이상의 문자"를 의미하고 플러스가 없으면 "한 문자"를 의미합니다. 귀하의 경우에는 둘 다 동일한 결과를 얻습니다.
참고 URL : https://stackoverflow.com/questions/5964373/is-there-a-difference-between-sg-and-sg
'Programing' 카테고리의 다른 글
"대상 GatherAllFilesToPublish가 존재하지 않습니다"라는 오류가 발생하는 이유는 무엇입니까? (0) | 2020.11.03 |
---|---|
배경 이미지가 div 자체보다 클 수 있습니까? (0) | 2020.11.03 |
Jenkins를 안전하게 종료하는 방법은 무엇입니까? (0) | 2020.11.03 |
MongoDB에 대한 연결이 거부되었습니다. errno 111 (0) | 2020.11.03 |
C ++ 프로그램에 시간 지연을 어떻게 추가합니까? (0) | 2020.11.03 |