दो दृष्टिकोण हैं। एक एकल अभिव्यक्ति की रचना करना है जो सभी संभावित विकल्पों को संभालती है:
^[a-zA-Z][0-9][a-zA-Z0-9-,._;:]{6,}$
|
^[a-zA-Z][a-zA-Z0-9-,._;:][0-9][a-zA-Z0-9-,._;:]{5,}$
|
^[a-zA-Z][a-zA-Z0-9-,._;:]{2}[0-9][a-zA-Z0-9-,._;:]{4,}$
आदि। यह एक जुझारू दुःस्वप्न है, लेकिन यह काम करेगा।
दो अभिव्यक्तियों का उपयोग करके एक ही स्ट्रिंग को दो बार सत्यापित करना एक बहुत आसान तरीका है:
^[a-zA-Z0-9-,._;:]{8,}$ # check length and permitted characters
और
<स्ट्राइक>स्ट्राइक>
[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z] # check required characters
संपादित करें:@briandfoy सही ढंग से इंगित करता है कि प्रत्येक आवश्यक वर्ण को अलग से खोजना अधिक कुशल होगा:
[a-zA-Z] # check for required alpha
और
[0-9] # check for required digit