''로 문장을 분할하고 주변 공백을 제거합니다.
이 코드가 있습니다.
var r = /(?:^\s*([^\s]*)\s*)(?:,\s*([^\s]*)\s*){0,}$/
var s = " a , b , c "
var m = s.match(r)
m => [" a , b , c ", "a", "c"]
전체 문자열이 일치하는 것 같지만 어디로 "b"
갔습니까? 차라리 얻을 것으로 기대합니다.
[" a , b , c ", "a", "b", "c"]
그래서 나는 m.shift()
같은 결과로 할 수 s.split(',')
있지만 공백을 제거했습니다.
정규 표현식에 실수가 있거나 오해가 String.prototype.match
있습니까?
복잡한 정규식을 사용하지 않고도이 작업을 수행하는 매우 간단하고 직접적인 방법이 있습니다.
var str = " a , b , c "
var arr = str.split(",").map(function(item) {
return item.trim();
});
//arr = ["a", "b", "c"]
네이티브 .map
는 IE9 이상에서 지원됩니다 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
또는 ES6 +에서는 더 짧아집니다.
var arr = str.split(",").map(item => item.trim());
완료를 위해 여기에 타이핑 정보가있는 Typescript에 있습니다.
var arr: string[] = str.split(",").map((item: string) => item.trim());
짧은 대답 : 사용 m = s.match(/[^ ,]/g);
마지막 그룹이 가장 최근 일치 (=
c
) 와 일치하기 때문에 RE가 예상대로 작동하지 않습니다
. 생략
{1,}$
하면 반환 된 일치 항목은입니다
" a , b ", "a", "b"
. 간단히 말해, RegExp는 flag
를 사용
하지 않는 한 지정된 그룹만큼 일치를 반환합니다
. 이 경우 반환 된 목록은 일치하는 모든 하위 문자열에 대한 참조를 보유합니다.
global
/g
효과를 얻으려면 다음을 사용하십시오.
m = s.replace(/\s*(,|^|$)\s*/g, "$1");
이렇게 하면 공백으로 둘러싸인 모든 쉼표 ( ,
), 시작 ( ^
) 및 끝 ( $
)이 원래 문자 ( ) 로 대체됩니다 comma
.
배열을 얻으려면 다음을 사용하십시오.
m = s.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/);
이 RE는 그때까지 문자열을 분할, 문자열 (시작과 끝의 공백을 제거 트림 <any whitespace>,<any whitespace>
. 공백 문자는 줄 바꿈과 탭을 포함합니다. 당신이에 충실하려면 공간 전용 공간 (사용 ) 대신
\s
.
복잡한 정규식없이 이것을 시도 할 수 있습니다.
var arr = " a , b , c ".trim().split(/\s*,\s*/);
console.log(arr);
당신은 당신의 목적을 위해 이것을 할 수 있습니다
편집 : 주석에 제안 된대로 두 번째 교체 제거. s.replace(/^\s*|\s*$/g,'').split(/\s*,\s*/)
먼저 replace
문자열을 트리밍 한 다음 split
함수가 '\s*,\s*'
. 이것은 ["a", "b", "c"]
입력에 출력 을 제공합니다" a , b , c "
정규식이 'b'를 캡처하지 않는 이유는 캡처 된 그룹을 반복하므로 마지막 발생 만 캡처됩니다. 자세한 내용은 여기 http://www.regular-expressions.info/captureall.html
그래서 마지막으로 내가 /(?=\S)[^,]+?(?=\s*(,|$))/g
필요한 것을 정확히 제공하는를 사용했습니다. 모든 문장은 주변 공백없이 ','로 분할되었습니다.
' a, OMG abc b a b, d o WTF foo '.
match( /(?=\S)[^,]+?(?=\s*(,|$))/g )
=> ["a", "OMG abc b a b", "d o WTF foo"]
많은 감사합니다!
참고 URL : https://stackoverflow.com/questions/7695997/split-the-sentences-by-and-remove-surrounding-spaces
'Program Tip' 카테고리의 다른 글
WPF 연결 속성 데이터 바인딩 (0) | 2020.11.29 |
---|---|
Chrome에서 CSS3 계산 (100 % -88px)이 작동하지 않음 (0) | 2020.11.29 |
정수 배열을 자바 스크립트의 문자열 배열로 변환 (0) | 2020.11.29 |
하위 경로에서 상위 경로로 어떻게 이동합니까? (0) | 2020.11.29 |
`vi`의 선택 항목 내에서 찾기 및 바꾸기 (0) | 2020.11.29 |