2016-07-28 2 views
1

JavaScript로 공백으로 시작하고 공백 (#) 다음 문자로 시작하는 모든 문자열과 일치하는 정규 표현식을 작성하려고합니다. 그러나이 표현식에서 16 진수 코드를 제외하고 싶습니다.#tags하지만 16 진수 코드가 아닌 정규 표현식

나는 캡처 #tags이 표현이 있습니다

/([\s]#[^<\s]+)/g 

을 나는 내 큰 프로그램을 받게 될 것이라는 형식 (#XXXXXX)에서 진수 코드를 캡처 표현이 있습니다

/(#[0-9a-fA-F]{6,6}\b)/g 

그러나 나는 그것들을 어떻게 조합 할 수 있을지 모르기 때문에 첫 번째 표현식에 의해 기술되지만 두 번째 표현식에 의해 기술되지 않는 일치들로 끝난다.

저는 모든 것을 하나의 정규 표현식에서하고 싶습니다. 이것이 가능하지 않다면 정규 표현식과 JavaScript 함수의 조합을 사용하여 #로 시작하는 16 진수가 아닌 문자열을 모두 얻는 방법을 알고 싶습니다. 그게 도움이된다면 jQuery와 Backbone.js를 사용하고 있습니다.

추가 제공 :

은이 사이의 차이점은 무엇입니까 :

/(#[0-9a-fA-F]{6,6}\b)/g 

이 :

/(#[0-9a-fA-F]{6}\b)/g 

내가 쓰고 내 표현을 테스트하고 https://regex101.com을 사용하고 둘 다 같은 결과를주는 것처럼 보입니다.

+0

테스트 입력을 제공 할 수 있습니까? 뭐라 구요? 뭐라 구요? 추가 크레딧 : 당신이하고있는 것을 보여주는 regex101.com 퍼머 링크를 만들 수 있습니다. –

+2

추가 크레딧의 경우 : 유일한 차이점은'{6}'이 (는)'{6,6} '보다 훨씬 더 아름답습니다. –

답변

2

당신은 내부의 부정적인 모습 미리 ((?!)로 두 번째 정규 표현식을 사용할 수 있습니다 첫 번째 다음 해시 즉시 문자열을 시작할 수있는 가능성을 시작하기에 내가 필요없이, 추가

(?:\s|^)(#(?![\da-fA-F]{6}\b)[^<\s]+) 

공간.

Regex tester

NB를 참조하십시오 {6} : {6,6} 실제로 그것을 위해 짧은 컷과 완전히 동일합니다. regular-expressions.info에 명시된 바와 같이 :

토큰을 반복 할 수있는 횟수를 지정할 수있는 추가 수량 기호가 있습니다.

구문은 맥스 제로 또는 일치의 최소 개수를 나타내는 양의 정수와 이다 {최소, 최대}는 나타내는 분 이상인 정수이다 최대 일치 수입니다. [...] 쉼표와 을 모두 생략하면 최대은 토큰을 정확히 반복하도록 엔진에 알립니다. 번.

+0

0-9 조각을 음수 표현에서 제거한 이유는 무엇이며 어떻게 해결할 수 있습니까? 그것 없이도 여전히 작동합니까? – Simon

+2

'\ d'는 동일합니다. – L3viathan