How to test that a string doesn't contain specific characters?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to test that a string doesn't contain specific characters?
# 1  
Old 10-25-2016
How to test that a string doesn't contain specific characters?

Hi ! Smilie

I made this :
Code:
#!/bin/bash

rsa_dir="/etc/openvpn/easy-rsa/"
rsa_key_dir="/etc/openvpn/easy-rsa/keys/"
ccd_dir="/etc/openvpn/ccd/"
regex_special_char='[^a-zA-Z_0-9\s]'

cd $rsa_dir

while
read -p "Please can you enter the vpn's username : " username
[[ -z "$username" ]] || [[ ${#username} -lt 2 ]] || [[ ${#username} -gt 15 ]] || [[ "$username" =~ $regex_special_char ]]
do
echo "Your entry must not contain special characters and its length must do between 2-15 characters."
done

echo "ok"

I will wish to add a condition which test if there isn't these characters "é è ç à" into the input. I think regex is a good way but my solution doesn't work.

Thanks by advance. SmilieSmilie
# 2  
Old 10-25-2016
Hi,

Can you try like the following ( please note i removed capital letters to get different output ):

Code:
if [[ "avc123" =~ [a-z0-9èàù] ]]; then echo matches; else echo "does not match caps"; fi
matches
if [[ "ABC" =~ [a-z0-9èàù] ]]; then echo matches; else echo "does not match caps"; fi
does not match caps
if [[ "èxuàtiù" =~ [a-z0-9èàù] ]]; then echo matches; else echo "does not match caps"; fi
matches

# 3  
Old 10-25-2016
I don't understand that you want me saySmilie because when I try [^a-zA-Z_0-9éèçàù\s] it is not working.
# 4  
Old 10-25-2016
Did you try the code shown in my previous post ( and adapt according to your need ) ?

Quote:
because when I try [^a-zA-Z_0-9éèçàù\s] it is not working.
What is not working ? Always write with details such as issued input, executed command and error message / output etc .
# 5  
Old 10-25-2016
example :
Code:
# ./user_ovpn.sh
Please can you enter the vpn's username : usertesté
ok

And me I want the output says : "Your entry must not contain special characters and its length must do between 2-15 characters." on all the characters "éèçàù", [^a-zA-Z_0-9\s] works fine with "&~"#'{(-` etc...) but not with accent
# 6  
Old 10-25-2016
Hi,
Your regex in first post could work with correct locale, example:
Code:
$ XX="éàç"
$ LC_ALL=C
$ [[ "$XX" =~ [A-Za-z0-9_] ]] && echo ok
$ LC_ALL=fr_FR.UTF-8
$ [[ "$XX" =~ [A-Za-z0-9_] ]] && echo ok
ok

I choice "fr_FR.UTF-8" because I'm french Smilie

Regards.
This User Gave Thanks to disedorgue For This Post:
# 7  
Old 10-25-2016
Code:
# ./user_ovpn.sh
./user_ovpn.sh: line 9: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8): No such file or directory

Me too, but it seems not worked
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Test command non case specific string comparision

Hi, I want to do caseless string comparision using test command for eg: Ind_f="y" test "$Ind_f" == "y|Y" i tried , ** , nothing worked. any thoughts on how to do case insensitive string comparison using test command without converting to any particular case using typeset or tr? (8 Replies)
Discussion started by: Kulasekar
8 Replies

2. Shell Programming and Scripting

[Solved] If doesn't evaluate the first test

Good afternoon, I am tearing hair out over this. It should be so simple. I have an if statement to evaluate whether or not replication is working. I am testing variables from mysql to see if they are both "Yes". I have put some echo statements in to see how far the code proceeds. It always... (6 Replies)
Discussion started by: jimm
6 Replies

3. Shell Programming and Scripting

Count specific characters at specific column positions

Hi all, I need help. I have an input text file (input.txt) like this: 21 GTGCAACACCGTCTTGAGAGG 50 21 GACCGAGACAGAATGAAAATC 73 21 CGGGTCTGTAGTAGCAAACGC 108 21 CGAAAAATGAACCCCTTTATC 220 21 CGTGATCCTGTTGAAGGGTCG 259 Now I need to count A/T/G/C numbers at each character location in column... (2 Replies)
Discussion started by: thienxho
2 Replies

4. Shell Programming and Scripting

Can't figure out how to find specific characters in specific columns

I am trying to find a specific set of characters in a long file. I only want to find the characters in column 265 for 4 bytes. Is there a search for that? I tried cut but couldn't get it to work. Ex. I want to find '9999' in column 265 for 4 bytes. If it is in there, I want it to print... (12 Replies)
Discussion started by: Drenhead
12 Replies

5. Shell Programming and Scripting

sed replacing specific characters and control characters by escaping

sed -e "s// /g" old.txt > new.txt While I do know some control characters need to be escaped, can normal characters also be escaped and still work the same way? Basically I do not know all control characters that have a special meaning, for example, ?, ., % have a meaning and have to be escaped... (11 Replies)
Discussion started by: ijustneeda
11 Replies

6. Shell Programming and Scripting

Value of variable is NULL, but test doesn't seem to recognize

Hello, Unix-forums! My problem: read -p "Enter any number, please" number sleep 1 echo $number | tr -d 0-9 test -z $number && echo "Thank you" || echo "This is not a number"Test always displays "This is not a number". It doesn't matter if I entered a or 1. But if I order echo... (2 Replies)
Discussion started by: intelinside
2 Replies

7. Programming

Kernel module - How to test if file doesn't exist

Hey, I'm currently getting into some kernel module progamming. As a little exercise I want to read the headers out of an ELF file. My code is very simple, here is the important part: struct file *fp; /* ... */ fp = filp_open("some/file/on/my/pc", O_RDONLY, 0); if(fp == NULL) { ... (15 Replies)
Discussion started by: disaster
15 Replies

8. Shell Programming and Scripting

How to check weather a string is like test* or test* ot *test* in if condition

How to check weather a string is like test* or test* ot *test* in if condition (5 Replies)
Discussion started by: johnjerome
5 Replies

9. Shell Programming and Scripting

Test on string containing spacewhile test 1 -eq 1 do read a $a if test $a = quitC then break fi d

This is the code: while test 1 -eq 1 do read a $a if test $a = stop then break fi done I read a command on every loop an execute it. I check if the string equals the word stop to end the loop,but it say that I gave too many arguments to test. For example echo hello. Now the... (1 Reply)
Discussion started by: Max89
1 Replies

10. Shell Programming and Scripting

replacing specific characters in a string

Hi Friends, Following is an output of a script OPWQERIUTYKLSADFJHGXZNMCVBWQOPERIUTYKLSADFJHGXZNMCVB I want to replace above string's 11 to 17 character by ******* (7 stars) How can it be done? Please somebody guide me. (6 Replies)
Discussion started by: anushree.a
6 Replies
Login or Register to Ask a Question