2013-10-31 2 views
0

URL의 경로명을 테스트하려고하는데, 경로명이 privmsg로 시작하고 선택 항목에 단어 ​​중 하나가 포함되어 있는지 확인하십시오. 그리고 내 한정 기호는 적어도 하나의 단어를 찾아야한다는 것을 선택합니다.은 경로 이름이로 시작하는 경우 포함됩니다. Regex

새 RegExp 덕분에 답변 중 하나가 나와서 더 자세히 설명했습니다. 우리는 내가 원하는하지 않는 다른 모드가 있지만

var post = /(^\/privmsg\?).+(post|reply){1}(.*)?/; 

내 URL은

/privmsg?mode=post 
/privmsg?mode=reply 
/privmsg?mode=reply&p=2 //another way 

처럼 보일 것입니다. 내가 privmsg로 시작하는 상수 URL을 가져 와서 최소한 게시하거나 응답해야합니다. 누군가가 내 정규식 문자열에 잘못이 무엇인지 설명하고 잘못 수량을 사용하는 경우.

문제는 지금은 아직 ... 밖으로 거짓오고있다

답변

1

당신은 ?(post|reply) (즉 mode=) 사이의 임의의 문자를 허용해야합니다. 예 :

var post = /^\/privmsg\?.+(post|reply){1}/g; 
         \/ 
       |match any sequence of| 
       |1 or more characters | 
+0

답변 해 주셔서 감사합니다. 나는 두 응답이 내가 실제로 말한 것을 이해할 수있게되어서 고맙게 생각한다. 나는 한 번 시험 한 나의 받아 들여진 응답을 검사 할 것이다. 다시 한 번 감사합니다 – EasyBB

+1

@EasyBB : 문서에 대해 말하기 : ** [this regex resource] (http://www.regular-expressions.info/) **는 매우 중요합니다. (아무도 신경 써야 함) – gkalpak

+0

ok 나중에 이것을 유감스럽게 생각합니다. , 나는 그것이 틀렸기 때문에 대답을 지워야 만했다. 나는 너의 것을 가져다가 그것에 덧붙여서, 때때로 게시물과 답장 후에 더 많은 인물이 있다는 것을 깨닫지 못했다 ... 이것은 내가 지금까지 가지고있는 것인데, 나는 틀린 테스트 위치를 계속 얻는다. 경로명'/ (^ \/privmsg \ ?). + (post | reply) {1} (. *)? /' – EasyBB

1

당신은 mode= 위해 무언가를 포함 그리워한다는 것입니다.

정규 표현식을 사용하면 /privmsg?post과 같은 문자열을 일치시킵니다.

그래서 mode=을 포함하도록 정규식을 변경 :

^\/privmsg\?.*(post|reply)$ 
+0

내가가는대로 모든 것을 스스로 가르쳐 주셔서 감사합니다. 정규 표현식에 능숙하지 않습니다. 그리고 실제로 이것을 쉽게 배울 수있는 정리 된 문서는 없습니다. 다시 한 번 감사드립니다 – EasyBB

+0

@ EasyBB 기꺼이 도와 드리겠습니다. 가장 도움이 된 답변을 수락하는 것을 잊지 마십시오. –

관련 문제