2017-12-22 20 views
1

-으로 RegularExpression이 예상대로 작동하지 않는 다 나는 <code>Regular Expression</code>의 도움으로 결과입니다 달성하고자하는 #

http://articles-test.mer.com --> should not match/accept or return false 

http://articles-test.mer.com/ --> should not match/accept or return false 

http://articles-test. mer.com/ --> should not match/accept or return false 

http://articles-test. mer.com/sites --> should not match/accept or return false 

http://articles-test.mer.com/sites --> should match/accept or return true 

http://foodfacts.merc.com/green-tea.html --> should match/accept or return true 

http://articles-test.merc.com/sites/abc.aspx --> should match/accept or return true 
URLdomain, 그것은해야 not match/accept

I가있는 경우 즉

결론 시도한대로 아래 expression 있지만 예상대로 작동하지 않습니다 -

^HTTP (S) : // (. \ W-] +) + [\ W-] + (/ [\ W-./?])?$

제안주세요 감사에서 전진!

+0

점 : \\ -] + \.'을 이스케이프 처리해야합니다. – HimBromBeere

+0

@HimBromBeere 추가하거나 제외 할 표현식 부분을 강조 표시 할 수 있습니까? – PPB

+2

당신은 당신이 * 일치하지 않기를 원하는 것에 대해 많이 말했지만, 당신이하고 싶은 일을 분명히 말하지 않았습니다 *. 당신은 정규식이이 직업에 적합한 도구라고 확신합니까? 어떤 폼이나 URI로 작업하려고하는 것 같습니다 - 당신은'Uri'를 TryCreate 할 수없고 다양한 속성을 검사 할 수 있습니까? –

답변

1

당신이 정규식을 사용할 수 있습니다

^http(s)?://[^/\s]+/.+$ 
+2

이것은 또한 "http : // my 괴상한 공백을 포함하는 문자열/kakakakaka"와 일치 할 것입니다. 이것은 유효한 URL이 아닙니다. – HimBromBeere

+0

@HimBromBeere -하지만 그것은 내가 생각하는 요구 사항이 아닙니다. –

+0

@karthikselvaraj 업데이트 됨! – PPB

3

그것은 일반적으로 단일 문자 의미로 당신 만 점을 탈출해야합니다. 슬래시도 마찬가지입니다. 그래서 정규식이된다 : \.는 점과 일치하는 반면

^http(?:s)?:\/\/(?:[\w-]+\.?)+\/[\w-\.]+(\/[\w-])?$ 

는 그래서 \/\/ 그대로, // 일치

.

일부 비 캡처 그룹 (?:)도 추가했습니다. 각 부분을 얻으려면을 원한다면이 두 문자를 생략하십시오. regex101

편집에

체크 아웃 : 당신은 또한 당신의 URL 대신 디렉토리의 파일과 일치 할 수 있도록 I've는 / 뒤에 부분에 \.을 추가했다.

EDIT2 : 이해하기 어려운 표정으로 휠을 다시 발명하는 대신 this post에 표시된대로 Uri.TryCreate을 사용하여 지정된 문자열이 유효한 URL인지 확인해야합니다.

Uri uriResult; 
bool result = Uri.TryCreate(myString, UriKind.Absolute, out uriResult) 
    && uriResult.Scheme == Uri.UriSchemeHttp; 
+0

감사합니다 ... 매력처럼 작동했습니다. – PPB

+0

하지만이 URL을 입력하면 'http://foodfacts.mercola.com/green-tea.html 그것이 일치하지 않으면, 유효해야합니다. – PPB

+0

내 요구 사항이 업데이트되었습니다 ... – PPB