/ / पीसीआरई पैटर्न डिजिट के लिए नियमित अभिव्यक्ति किसी भी संख्या और अंकों के बाद पीछा अंक के साथ समाप्त होने वाली कोई डबल स्लेश नहीं है? - PHP, regex

पीसीआरई पैटर्न नियमित रूप से अभिव्यक्ति के लिए अभिव्यक्ति किसी भी संख्या और अंकों के बाद अंकों से समाप्त होने वाली कोई डबल स्लेश नहीं है? - PHP, regex

मेरे पास अब तक निम्न है:

"#^[0-9]([0-9]|/)*$[0-9]#"

मै इस्तेमाल कर रहा हूँ # जैसा कि आगे की slashes के रूप में delimiter पैटर्न में हैं।

यह सही ढंग से काम नहीं कर रहा है, हालांकि, इसे एक अंक से शुरू करने की आवश्यकता है और अंक और स्लेश (कोई डबल स्लेश नहीं) और अंक के साथ समाप्त होता है।

उत्तर:

उत्तर № 1 के लिए 1

आप इस सरल regex (द ऑनलाइन डेमो आपको दिखाता है कि कौन से तार मेल खाते हैं या असफल होते हैं):

^d(?:(?!//)[d/])+d$

कोड नमूना

$regex = "~^d(?:(?!//)[d/])+d$~";
if(preg_match($regex,$string,$m)) echo $m[0];

रेगेक्स समझाओ

^                        # the beginning of the string
d                       # digits (0-9)
(?:                      # group, but do not capture (1 or more times
# (matching the most amount possible)):
(?!                    #   look ahead to see if there is not:
//                   #     "//"
)                      #   end of look-ahead
[d/]                  #   any character of: digits (0-9), "/"
)+                       # end of grouping
d                       # digits (0-9)
$                        # before an optional n, and the end of the
# string

उत्तर № 2 के लिए 1

मैं भूल जाता हूं कि डिलीमीटर को कैसे बदला जाए। कुछ कमांड / भाषाओं के साथ आपको # इस तरह की delimieter शुरू करना होगा # शुरुआत में # डेलीमीटर के रूप में उपयोग करने के लिए। यह आपके लिए मामला नहीं हो सकता है।

मुझे शायद मेरी आरई पहली बार देखना चाहिए। लेकिन यहां पर एक ईमानदार झटका है।

"#^[0-9][0-9/[^(//)]]+[0-9]$#"    //greedy


"#^[0-9][0-9/[^(//)]]+?[0-9]$#"   //non-greedy

जवाब के लिए 0 № 3

मेरा समाधान:

"#^[0-9]+(/[0-9]+)*$#"

संपादित करें यदि कम से कम एक स्लैश मौजूद होना चाहिए:

"#^[0-9]+(/[0-9]+)+$#"

या गैर एकत्रित कोष्ठक के साथ और d के बजाय [0-9]:

"#^d+(?:/d+)*$#"

जवाब के लिए 0 № 4

आपको इस तरह कुछ उपयोग करना चाहिए:

%^d+(?:/d+)+$%usD

स्पष्टीकरण:

%               # beginning of the pattern
^           # beginning of the string
d+     # it starts with at least one digit
(?:     # beginning of a non-capturing group which contains
/   # a single slash
d+ # followed by at least one digit, so it will never match double slashes
)       # end of non-capturing group
+       # the non-capturing group should match once or more
$           # end of the string
%               # end of the pattern
u           # unicode string
s           # the "." matches all characters including "n"
D           # the "$" matches the end of the string and not "n" (end of the line)