आपको जो पैटर्न चाहिए वह कुछ इस तरह है ( इसे rubular.com पर देखें ):
^[a-zA-Z0-9_.-]*$
स्पष्टीकरण:
^ लाइन एंकर की शुरुआत है
$ लाइन एंकर का अंत है
[...] एक चरित्र वर्ग परिभाषा है
* "शून्य या अधिक" दोहराव है
ध्यान दें कि -चरित्र वर्ग परिभाषा में शाब्दिक डैश अंतिम वर्ण है, अन्यथा इसका एक अलग अर्थ (यानी रेंज) है। .यह भी एक अलग अर्थ के बाहर चरित्र वर्ग परिभाषा है, लेकिन अंदर, यह सिर्फ एक शाब्दिक है.
संदर्भ
PHP में
यह दिखाने के लिए कि आप इस पैटर्न का उपयोग कैसे कर सकते हैं:
<?php
$arr = array(
'screen123.css',
'screen-new-file.css',
'screen_new.js',
'screen new file.css'
);
foreach ($arr as $s) {
if (preg_match('/^[\w.-]*$/', $s)) {
print "$s is a match\n";
} else {
print "$s is NO match!!!\n";
};
}
?>
उपरोक्त प्रिंट ( जैसा कि ideone.com पर देखा गया है ):
screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!
ध्यान दें कि पैटर्न थोड़ा अलग है, \wइसके बजाय का उपयोग कर । यह "शब्द चरित्र" के लिए वर्ण वर्ग है।
एपीआई संदर्भ
विनिर्देश पर ध्यान दें
ऐसा लगता है कि आपके विनिर्देशन का पालन किया जा रहा है, लेकिन ध्यान दें कि यह उन चीजों से मेल खाएगा ....., जैसे , आदि, जो आप चाहते हैं या नहीं हो सकती हैं। यदि आप अधिक विशिष्ट हो सकते हैं कि आप किस पैटर्न से मेल खाना चाहते हैं, तो रेगेक्स थोड़ा अधिक जटिल होगा।
उपरोक्त रेगेक्स भी रिक्त स्ट्रिंग से मेल खाता है। यदि आपको कम से कम एक वर्ण की आवश्यकता है, तो पुनरावृत्ति के लिए (शून्य-या-अधिक) के +बजाय (एक-या-अधिक) का उपयोग करें *।
किसी भी मामले में, आप अपने विनिर्देश को स्पष्ट कर सकते हैं (हमेशा रेगेक्स प्रश्न पूछते समय मदद करता है), लेकिन उम्मीद है कि आप यह भी सीख सकते हैं कि उपरोक्त जानकारी को देखते हुए पैटर्न को कैसे लिखा जाए।