Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
495 views
in Technique[技术] by (71.8m points)

ms word - Regex code for any string containing BOTH letters AND digits and possibly underscores and dashes

My regex knowledge is pretty limited, but I'm trying to write/find an expression that will capture the following string types in a document:

DO match:

  • ADY123
  • AD12ADY
  • 1HGER_2
  • 145-DE-FR2
  • Bicycle1
  • 2Bicycle
  • 128D
  • 128878P

DON'T match:

  • BICYCLE
  • 183-329-193
  • 3123123

Is such an expression possible? Basically, it should find any string containing letters AND digits, regardless of whether the string contains a dash or underscore. I can find the first two using the following two regex:

  • /([A-Z][0-9])w+/g
  • /([0-9][A-Z)w+/g

But searching for possible dashes and hyphens makes it more complicated...

Thanks for any help you can provide! :)

MORE INFO:

I've made slight progress with: ([A-Z|a-z][0-9]+-*_*w+) but it doesn't capture strings with more than one hyphen.

I had a document with a lot of text strings and number strings, which I don't want to capture. What I do want is any product code, which could be any length string with or without hyphens and underscores but will always include at least one digit and at least one letter.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can use the following expression with the case-insensitive mode:

((?:[a-z]+S*d+|dS*[a-z]+)[a-zd_-]*)

Explanation:

                   # Assert position at a word boundary
(                    # Beginning of capturing group 1
  (?:                # Beginning of the non-capturing group
    [a-z]+S*d+     # Match letters followed by numbers
    |                # OR
    d+S*[a-z]+     # Match numbers followed by letters
  )                  # End of the group
  [a-zd_-]*         # Match letter, digit, '_', or '-' 0 or more times
)                    # End of capturing group 1
                   # Assert position at a word boundary

Regex101 Demo


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...