2012-05-02 2 views
0

내 응용 프로그램에서 HTML 요소의 id 속성은 #로 시작해야합니다. HTML5에 따르면 id 속성의 유일한 제한 사항은 공백을 포함해서는 안되며 이어야 한 문자 긴 일 .. 그래서 내가 위의에 따라 id 속성과 일치하는 다음과 같은 정규 표현식을 썼다는 ... 제약 자바 스크립트 정규 표현식에서 일치하는 문자열로 돌아 가기

idMatch: /^#\S+$/ 

가 지금은 문자열의 시작 부분에 # 문자를 제거하려면 말했다 내 질문은, 내가 할 수있는 두 가지 작업을 하나의 정규 표현식 ... ie .. 내가 cha를 추출 할 수 있습니다 첫번째 정규 표현식을 사용하여 위의 제약 조건과 일치하는 문자열에 첫 번째 '#'(문자는 '#'을 포함한 모든 비 공백 문자를 포함 할 수 있음) 이후. 1) 일치하는 ID 문자열을 식별해야합니다. 문자열 (ID는 #으로 시작하고 HTML5 ID 명명 규칙을 따른다.) 2) 첫 번째 # 이후에 인식 된 문자열의 일부를 추출한다.

+0

HTML 요소 "id"attrubute는 이전 버전과의 호환성을 유지하려는 경우 "#"을 포함해서는 안됩니다. –

+0

내 id 선택기 constratint는 ID 문자열이 #부터 시작해서 html5 id 규칙을 따른다는 것입니다. –

답변

1

RegExes에서 괄호를 사용하여 원하는 것을 할 수 있습니다.

/^#(\S+$)/.test(testString); 
var idWithoutHash = RegExp.$1; 
+0

$ 1은 무엇을 의미합니까? –

+1

에 의해 캡처 된 최초의 백 - 레퍼런스 값입니다. 괄호''()''. RegExp에서 최대 9 개의 역 참조를 가질 수 있습니다. –

+1

참조 : http://www.webreference.com/js/column5/backreferences.html –

1

여기에 약간의 코드가있다. 일치하면 #없이 ID를 반환합니다. 더 쉽게 사용할 수 있도록 약간의 도우미 기능을 생성하십시오.

var regex = /^#\S+$/, 
    id = '#foo', 
    str; 

str = id.replace(regex, function($1) { 
    return $1.split('#').join(''); 
}); 

console.log(str); 
+0

이 방법을 알고 있습니다 ... 정규 표현식만을 사용하여 가능한지 여부를 묻습니다 ... 정규식에서 역 추적이라고하는 것을 들었습니다. –

+1

JS – GillesC

+0

에 의해 역 추적이 지원되지 않습니다. http://www.regular-expressions.info/lookaround.html - "Lookbehind에 대한 중요한 참고 사항"절 참조. – GillesC

관련 문제