2013-02-05 1 views
6
나는 그것의 구성 부분으로 CSS에서 테두리 속성을 분할 할

가 즉 위해 :정규식 분할 CSS 테두리의 부분으로 속성

.someClass{ 
    border: 1px solid black; 
} 

내가 경계를 분할 한

border-width: 1px 
border-style: solid; 
border-color: black; 

속으로 : 및 세미콜론을 사용하기 전에 속성의 값 섹션을 구문 분석하면됩니다.

CSS에서 위의 3 가지 속성을 조합하여 사용할 수 있습니다.

border: 1px solid; 
border: solid Gold; 
border: 1em; 
border: 1mm #000000; 
border: 1px inset rgb(12, 44, 199); 

모두 합법적이므로이를 고려해야합니다. 내가 가진 무엇

지금까지 고체가 3 캡처 그룹이 아닌 2에 넣고로 "1 픽셀의 솔리드"의 경우에 일반적인 경우에 대해 잘 작동하지만 실패

([0-9]+[a-zA-Z|%]+)* *([a-zA-Z]*) *(.*) 

입니다. 저는 정규 표현식 전문가가 아니므로 아주 기본적인 실수를 저 지르지 만 도움이된다면 크게 감사 할 것입니다. 나는 C#으로 작업하고있다 (그러나 주로 http://gskinner.com/RegExr/에서 테스트 했으므로 어떤 차이가있을 수있다).

답변

1

border:은 표현의 시작 부분에 우연히 두 번째와 일치하지 않으므로 큰 도움이되는 것처럼 보인다. 또는 제 3 그룹. 마찬가지로 표현식 끝에 ;을 추가하면 두 번째 또는 세 번째 그룹을 너무 빨리 캡처 할 수 없습니다. 그 외에도 두 번째 그룹을 *에서 +으로 변경하면 두 번째 그룹을 세 번째 그룹이 아닌 두 번째 그룹과 일치시킬 수 있으므로 도움이됩니다. 전부,이 시도 :

border: ([0-9]+[a-zA-Z|%]+)* *([a-zA-Z]+)* *(.*)*; 

을 나는이 완벽 의심하고 100 % 작업 결과를 필요로하는 경우, 당신은 아마 하나의 정규 표현식을 사용하는 대신 토큰 화와 문자열을 구문 분석하지 않아야 (내가보기 엔 CSS 규칙을 의심 정규식으로 완전히 파싱됩니다.)하지만이 규칙이 제한된 규칙에 적용된다면 큰 도움이됩니다.

+0

감사합니다, 저를 위해 잘 작동하는 것으로 보이며 정확한 결과를 얻습니다. – Nymain