Cố gắng xác minh rằng chuỗi chỉ có chữ thường, chữ hoa hoặc số trong đó.Bash cần kiểm tra chuỗi ký tự chữ số
if ! [[ "$TITLE" =~ ^[a-zA-Z0-9]+$ ]]; then echo "INVALID"; fi
Suy nghĩ?
* CẬP NHẬT *
Biến TITLE hiện chỉ có chữ hoa chữ vì vậy nó phải vượt qua và không có gì nên được outputted. Tuy nhiên, nếu tôi thêm một ký tự đặc biệt vào TITLE, câu lệnh IF sẽ bắt được nó và lặp lại INVALID. Hiện tại nó không hoạt động. Nó luôn luôn lặp lại không hợp lệ. Tôi nghĩ rằng điều này là do tuyên bố regex của tôi là sai. Tôi nghĩ theo cách tôi viết nó, nó tìm kiếm một danh hiệu có cả ba cái trong đó.
Bash 4.2.25
Ý tưởng là, người dùng sẽ có thể thêm bất kỳ danh hiệu miễn là nó chỉ chứa chữ hoa, chữ thường hoặc số. Tất cả các nhân vật khác sẽ thất bại.
* CẬP NHẬT *
Nếu TITLE = ThisIsAValidTitle nó Echos không hợp lệ.
Nếu TITLE = ThisIs @@@@@@@?hl=viĐịnh danh nó cũng không hợp lệ.
* GIẢI PHÁP *
Weird, cũng nó bắt đầu làm việc khi tôi đơn giản hóa nó xuống này:
TEST="Valid0"
if ! [[ "$TEST" =~ [^a-zA-Z0-9] ]]; then
echo "VALID"
else
echo "INVALID"
fi
* REAL GIẢI PHÁP *
biến của tôi có khoảng trống trong nó ... DUH
Xin lỗi vì những kẻ rắc rối ...
* GIẢI PHÁP CUỐI CÙNG *
này chiếm không gian trong tiêu đề
if ! [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then
echo "VALID"
else
echo "INVALID"
fi
Kết quả là gì? Bạn đã mong chờ điều gì? –
Biến TITLE hiện chỉ có văn bản chữ thường nên nó sẽ chuyển và không có kết quả nào được xuất. Tuy nhiên, nếu tôi thêm một ký tự đặc biệt vào TITLE, câu lệnh IF sẽ bắt được nó và lặp lại INVALID. Hiện tại nó không hoạt động. Nó luôn luôn lặp lại không hợp lệ. Tôi nghĩ rằng điều này là do tuyên bố regex của tôi là sai.Tôi nghĩ theo cách tôi viết nó, nó tìm kiếm một danh hiệu có cả ba cái trong đó. – Atomiklan
Dường như làm việc tốt cho tôi. Bạn đang sử dụng phiên bản bash nào? –