2014-09-22 3 views
-1

나는 모두 대문자로 된 주소 이름과 숫자의 콜렉션을 가지고 있으며 각 주소에 대해 처음으로 발생한 주소 번호 만 추출하려고합니다. -> 80 주소 자바 스크립트 정규식

  • 80A ROSE 산장 -> 80A
  • 80 장미 COTTAGE -> 80
  • 80ROSE COTTAGE

    • 80 ROSE 별장 : 다음 예는 내가 각에서 추출하고 싶은 것을 보여 -> 80 (실수없는 공간)
    • [다른 텍스트] (80) ROSE 별장 -> 80

    나는 몇 가지 유사한 질문이 인터넷에 여기와 다른 곳에서 답 발견 특히 단지 이름과 번호를 해결하기 위해 반대하지만 그들은 항상 전체 주소 처리 :

    Match each address from the address number to the 'street type'

    regex street address match

    Regular Expression: Any character that is NOT a letter or number

    javascript regular expressions address number

    JavaScript regex to validate an address

    마지막 하나는 심판을 만든다. 잠재적 인 단일 텍스트 문자 뒤에 오는 영숫자를 앞두고 부정적인 견해를 구성하도록 이끌어내는 미리보기 (예 : 80 A) 내 자바 스크립트 정규식. 그러나 "digits only found"그룹 (\ d +)을 추가하지 않으면 위에 나온 네 번째 예제는 숫자 만 반환합니다.

    (?:\d+\s*[A-Z]?(?![A-Z0-9]))|(?:\d+)) 
    

    이 두 그룹을 하나의 정규식으로 결합하는 방법이 있습니까? 또는 JavaScript의 정규식 구현에서 이것이 가능하지 않습니까?

    이 문제에 대한 도움이 있으면 크게 감사하겠습니다.

  • +1

    정말 그렇게 복잡해야합니까? 주소에는 일반적으로 찾고있는 번호 여야하는 하나의 번호 만 있습니다. '80A'와 같은 문자가 계속 나오거나 '80A'와 같이 공백 문자가 있으면 그 문자가 사용자가 찾고자하는 문자입니다. –

    +0

    /안녕하세요. 회신 해 주셔서 감사합니다. 데이터 세트는 완벽하지 않으며 마지막 두 예제와 같이 숫자가 시작 부분에 있지 않거나 별도의 공간이없는 숫자 뒤에 오는 단어가 아닙니다. 미리보기를 사용하지 않고, 나는 80ROSECOTTAGE가 80이되어야 할 때 80R이된다는 것을 발견했다. 따라서 나는 현재 유일한 대안 그룹을 추가했다. 이것은 작동하지만 그룹을 가지지 않고 결합하는 방법이 있는지 궁금합니다. – Derek

    답변

    0
    (\d+\s*(?:[A-Z](?![A-Z]))?) 
    

    시도해 볼 수 있습니다.

    데모보기

    http://regex101.com/r/kM7rT8/13

    +0

    안녕하세요, 제 정규 표현식의 첫 번째 그룹에 제안을 적용하려고합니다 (두 번째를 삭제할 수 있도록). 가장 좋은 내가 할 것 : \ d + \ s * [AZ]? (?! [AZ] {2,}) 예제 텍스트가 '80ROSE COTTAGE' . 이걸 어떻게 든 다른 식으로 적용한다는 건가요?필자가 요구하는 것은 적어도 하나 이상의 숫자 다음에 공백이 없거나 공백이 없으며 그 다음에 [A ~ Z '가오고 그 뒤에'A ~ Z '가 없음] 또는 마지막 부분에 실패합니다. , 원래 숫자 만). 그게 말이 되길 바래요? – Derek

    +0

    @Derek .replace 함수를 사용해야합니다. 그리고''. ''로 바꾸고 주어진 정규식을 사용하십시오. – vks

    +0

    죄송합니다. 그 사실을 깨닫지 못했습니다. 나는 'A 80 A'에서 이것을 사용하여 대체를 수행하면 '80 A '와 반대로'A 80 A '를 반환한다고 생각하는 것이 맞습니까? – Derek