2016-02-24 3 views
3

Я хочу, чтобы позволить любому символу, кроме <>%;$

То, что я сделал это r'^[^<>%;$]', но это, кажется, не работает.

+0

Пожалуйста отправьте соответствующий код. Еще лучше поместите пример на ideone.com или codepad.org и поделитесь ссылкой здесь. – DhruvPathak

ответ

3
r'^[^<>%;$]+$' 

Вы пропустили квантор * or +.

0

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

Смежные вопросы