일부 특정 문자에 표현식을 분할하려고합니다. 나는 우리가 정규식 사항 String.split()를 사용할 수 있습니다 알고, 그래서 이것은 나의 첫번째 추측이었다JS 문자열을 정규식으로 분할
function expressionSplit([input]) {
let regex = /([(),;.]+)/g;
let arr = input.split(regex);
arr.forEach(item => console.log('item: ' + item));
}
expressionSplit(['let sum = 1 + 2;if(sum > 2){\tconsole.log(sum);}']);
지금이 내가 기대했던 어디에도 없다, 그래서 나는 좀 더 많은 독서를했고, 발견 사람들은 나와 달리 문제없이 정규식으로 split()을 사용한다. 의아해,이 시도 : 내 기대에
function expressionSplit([input]) {
let regex = /([(),;.]+)/g;
let arr = input.replace(regex, '|').split('|');
arr.forEach(item => console.log('item: ' + item));
}
expressionSplit(['let sum = 1 + 2;if(sum > 2){\tconsole.log(sum);}']);
그리고 반대를 - 그것은 일, 대부분. 왜 이런 일이 생길까요? 내가 말했듯이, 그것은 나에게 전혀 이해가 안되기 때문에 일종의 JS- 전형적인 oddness 일 것이다. 다른 사람들은 split()을 문제없이 정규 표현식과 함께 사용하는 것 같다. 또한 어떻게 '\ t'(탭)로 나눌 수 있습니다. regex에 '\ t'를 추가하는 것은 아무 것도하지 않는 것처럼 보이고 '\\ t'는 't'에만 매치됩니다. 감사.
답변 해 주셔서 감사합니다. 나는 불평하지 않았고 JS를 공격적으로하는 것을 의미하지 않았으므로 방어를받을 필요가 없습니다. D. 하지만 JS만큼이나 유연하다는 것은 부인할 수 없습니다. 표준 프로그래밍 언어와 비교할 때 매우 흥미롭거나 이상하지는 않은 기능이 있습니다. – Alex
수비가되어서 죄송합니다. 자바 스크립트는 오랜 시간 동안 구멍을 뚫어 놓은 가방이었습니다. 나는 JavaScript가 다른 언어보다 불균형 적으로 더 많은 단점을 가지고 있다고 동의한다; 모든 언어는 이상하고 제도화 된 특이성을 가지고있다. –
전체 공개 : 나는 "싫은 사람"이기도했다. 그러나 그것이 언어를 정말로 알기도 전에였습니다. 자바 스크립트가 이전 버전과의 호환성 문제 ('typeof'를 보았습니다.)에 잘못 되었다면, 목적과 역사를 감안할 때 정말로 비난 할 수 있습니까? –