0

I need to create a regex for 3 rules.

  1. The string can start with a letter or _. No numbers are allowed before the letter or _.
  2. The _ can be added in any place.
  3. Using special characters or spaces is not allowed.

I created 2 regexes(^[A-Za-z0-9_]*$ and ^[^0-9]*$) but don't know how to combine them together. Also, the rules do not include a number at the end(like _Sss12).

_Aaa12 - correct
Aaa    - correct
aa aa  - fail
12aa   - fail
7

1 Answer 1

3

As far as I can see, you want to match an identifier, which

  • must start from letter A..Z, a..z or _
  • can contain letters A..Z, a..z or _, or digits 0..9

If it's your case then the pattern can be

^[A-Za-z_][A-Za-z0-9_]*$

where

^             - anchor, start of the string
[A-Za-z_]     - Letter A..Z or a..z or symbol _
[A-Za-z0-9_]* - Zero or more letters, digits or _
$             - anchor, end of the string

If letters can be any Unicode letter, not necessary Latin ones, you can use \p{L} (for any Unicode digit, not necessary 0..9 \d can be used, but I doubt if you want Persian or Indian digits in the pattern):

^[\p{L}_][\p{L}0-9_]*$
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.