Я хочу, чтобы позволить любому символу, кроме <>%;$
То, что я сделал это r'^[^<>%;$]'
, но это, кажется, не работает.
Я хочу, чтобы позволить любому символу, кроме <>%;$
То, что я сделал это r'^[^<>%;$]'
, но это, кажется, не работает.
r'^[^<>%;$]+$'
Вы пропустили квантор * or +
.
r'^[^<>%;$]'
регулярное выражение проверяет только для других, чем <
, >
, %
, ;
символов, $
в начале строки из-за ^
якоря (утверждающего положение в начале строки.
Вы можете использовать Python re.search
, чтобы проверить, содержит ли строка какой-либо из этих символов с классом символов [<>%;$]
или вы можете определить set
этих символов и использовать any()
:
import re
r = re.compile(r'[<>%;$]') # Regex matching the specific characters
chars = set('<>%;$') # Define the set of chars to check for
def checkString(s):
if any((c in chars) for c in s): # If we found the characters in the string
return False # It is invalid, return FALSE
else: # Else
return True # It is valid, return TRUE
def checkString2(s):
if r.search(s): # If we found the "bad" symbols
return False # Return FALSE
else: # Else
return True # Return TRUE
s = 'My bad <string>'
print(checkString(s)) # => False
print(checkString2(s)) # => False
s = 'My good string'
print(checkString(s)) # => True
print(checkString2(s)) # => True
См IDEONE demo
Пожалуйста отправьте соответствующий код. Еще лучше поместите пример на ideone.com или codepad.org и поделитесь ссылкой здесь. – DhruvPathak