简体   繁体   中英

RegExp - How to check if a string contains a substring in the certain position?

I tried to search this question first but didn't found what I need, here is it:

I have a string like: "substring1/substring2.substring3" (eg "library/History.read")

I need a regular expression to check:

  1. the substring1 must be "library"
  2. the substring2 must have a captial letter at the beginning
  3. the substring3 must be "read"

I'm not familiar with regular expression, the current I wrote is: 'library/([a-zA-Z])\\.(read)' but it is not correct. Please help me, thanks!

There are many ways to solve regex problems, starting from your own attempt here's something that works: :-)

library/([A-Z][a-zA-Z]+)\.(read)

You had three small mistakes:

  • . is a character class matching any character except newline. Escape your . like this \. not like this \\. ; and
  • Your first capture group was matching exactly one letter. You missed the quantifier. Use the + qunatifier to match one or more.
  • As pointed out by Peter, you were missing a character class for your first capital letter

Try this regex:

 testStrings = ["library/History.read", "library/other.read", "library/Geography.read", "library/History.unread", "ebook/hstory.read", "library/StackOverflow.read"] regex = /library\/[AZ][^\.]*\.read/ testStrings.forEach(testString => { console.log(regex.test(testString) + " - " + testString) })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM