2012-11-23 3 views
0

정규 표현식에 문제가 있습니다. 파일 이름이 여러 개인 이미지가 필요합니다. 나는 그들을 손으로했다. 그것은 쉽고 쉽습니다. 그러나 JavaScript를 사용하여 간단한 대체 reg ex로해야 할 일을 알고 싶었습니다. 그리고 그게 효과가 없을 때입니다. 이미지는 "muti blossom 02.png"라고 불리우며 크기가 조정되어 "iOS_multi_BLOSSOM_2048.jpg"라는 이름의 JPEG로 저장됩니다. 다른 것들은 같은 형태이지만 다른 명사를 가지고 있습니다; 다음 겨울, 잎, 서커스 등Regex는 javascript의 파일 이름을 대체합니다.

파일 이름은 구성된다 :

  • 공백,
  • 명사 (이하, 개시 (소문자)에
    • "System의" 경우)
    • 흰 공백
    • 숫자 (즉 가질 수 0 이전 및 하나 또는 두 자리 숫자), 또는 .png를 .PSD 될 수
    • 파일 확장 될 수있다 (아래 케이스). ,
    • 명사 (대문자)
    • 2,048 (새로운 고정 크기)
    • ,
    • 새로운

      • iOS_multi (작성된 낙타 대문자) 그런 다음 필요

      로 변경 될 파일 확장자 .jpg (소문자).

    나는 ([az] + \ s)가 "멀티"와 일치하고 (\ s \ d +. [az] + $) 숫자와 파일 확장명이 일치하지만, 중간의 비트도 일치시킵니다. 그리고 명사에 대문자를 사용하십시오. 그러나 나는 다른 사람이 있다고 확신합니다. 고맙습니다.

  • 답변

    1

    대체 텍스트를 대문자로 입력 할 수 없으므로 JavaScript 정규 표현식에서 replace으로는이를 수행 할 수 없습니다. 그러나 match 메서드는 조작 할 수있는 배열을 반환합니다.

    var oldImageName = "multi blossom 02.png"; 
    var matches = oldImageName.match(/multi (\w+) \d{1,2}\.(?:png|psd)/); 
    var newImageName = "iOS_multi_" + matches[1].toUpperCase() + "_2048.jpg"; 
    

    참고 :이은 "명사"나는 "자바 스크립트 정규식 Windows가 파일 이름에 허용하지 않는 문자를 대체하는"검색 아무것도 발견되지 않았다 공백

    +0

    예,". 명사는 "공백없이 단지 하나의 단어입니다 감사합니다 garyh - 그건 대우를합니다. –

    -1

    와 하나의 단어가 있다고 가정 , 그래서 여기 정규식 filesistem 허용하지 않는 윈도우 파일 이름에서 문자를 제거하는 것입니다 (/ \ :? <> | ") :

    var originalFileName='some filename:with"forbidden/>\? chars.in'; 
    var strippedFileName=originalFileName.replace(/[/\\:?<>|\"]+/g, "") 
    console.log(strippedFileName); 
    
    관련 문제