정규식 - 허용되는 문자를 확인하는 스크립트

정규식 - 허용되는 문자를 확인하는 스크립트

문자열을 검사하여 지정된 문자 목록 이외의 문자가 포함되어 있지 않은지 확인해야 합니다.

나는 이것을 테스트하기 위해 스크립트를 작성했습니다.

str="$1"

regex="^[0-9a-zA-Z\,\!\-\^\`@\{\}\[\],=\(\).;\/~_|]*$"

if [[ "$str" =~ $regex ]]
then
  echo "f yeah"
else
  echo "f you"
fi

그러나 이것은 작동하지 않는 것 같습니다. 제 생각에는 아직 멀었다고 생각합니다.

허용되는 문자 목록은 다음과 같습니다.

a-z A-Z 0-9 ` @ { } [ ] ^ , = ! ( ) . ; / ~ _ |

내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다.

답변1

]a는 백슬래시를 통해 문자 클래스에 포함될 수 없습니다 . 클래스의 첫 번째 요소여야 합니다. 대시도 마찬가지지만 이번에는 마지막이어야 합니다. 에서 까지의 범위 \-\^(예: 백슬래시 및 캐럿)만 일치합니다. (쓸데없는 백슬래시도 제거했습니다.)\\

regex='^[]0-9a-zA-Z,!^`@{}=().;/~_|[-]*$'

정말 *원하시나요 +? 정말로 빈 문자열을 받아들이시겠습니까?

관련 정보