2011-07-03 6 views
0

js 파일에서 모든 타입 캐스트를 제거하려고합니다. 내가 가진JS regex에서 타입 캐스트를 제거합니다.

현재 (하지-작업) 정규식은 다음과 같습니다

/(?!new\s+&?!function\s+)\w+\((.+)\)/gi 

은 기본적으로 내가 클래스 같은 것을 (VAR)하지만 new Class(arg) 또는 function Func(arg)

감사합니다!

답변

3
s = "Basically I want anything like Class(var) but not new Class(arg) or function Func(arg)" 

re = /(?:(?!new|function)\b\S+|^|[^\w\s])\s*\b([A-Z]\w*\s*\(.*?\))/g 

for (var match; (match = re.exec(s));) { alert(match[1]); } 

Class(var) 

을 생산하지만 실제 매개 변수 목록에 중첩 된 괄호가없는 경우에만 정확하게 일치합니다. 정규 문법은 중첩 괄호 그룹을 처리 할 수 ​​없기 때문에 일반적으로 함수 호출을 정규 표현식을 사용하여 수행 할 수 없습니다.

+0

나는 당신의 답이 내가 (사실 아주 똑똑한) 질문에 대답한다고 생각하기 때문에 이것을 주었다. 그러나 이것을 내 대본에 넣은 후에 내가 언급하지 않은 다른 것들을 바꾸기 시작했다. – Jacksonkr

+0

@Jackson, 스크립트 구문 분석, 결과 구문 분석 트리로 이동, 수정 및 렌더링을 수행 할 수있는 적절한 JavaScript 파서를 살펴 보았습니까? http://stackoverflow.com/questions/6511556/javascript-parser-for-java에서 최근에이 문제에 대해 논의했으며, Java에 능숙하지 않다면 Python 및 다른 언어에 대한 SO에 대한 다른 토론이 있습니다. JSLint는 JS 파서를 기반으로 만들어 졌다고 생각한다. –

관련 문제