문자열을 검사하여 지정된 문자 목록 이외의 문자가 포함되어 있지 않은지 확인해야 합니다.
나는 이것을 테스트하기 위해 스크립트를 작성했습니다.
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,!^`@{}=().;/~_|[-]*$'
정말 *
원하시나요 +
? 정말로 빈 문자열을 받아들이시겠습니까?