RegEx for Google Form requiring Specific Number Format [closed] - regex

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
I need to limit an accepted text response to be only in the following format:
1234567.123 AorABorABCD (1or12)
So, 7-digits.3-digits 1-4Letters (1-3-digits)
This is a SKU number, followed by 1-4 letters noting size (S or YM or SMMD) followed by 1-3 digits noting quantity needed.
Any help is appreciated -- thanks!

Something like this?
\d{7}\.\d{3}\s[A-Za-z]{1,4}
Explanation:
\d{7} - matches 7 digits
\. matches the dot (".")
\d{3} - again, matches 3 digits
\s - matches a whitespace
[A-Za-z]{1,4} - matches 1-4 letters from A to Z no matter the case.
Will match:
1234567.123 AABd
1534567.113 AaAA
4586451.773 dasA
1231846.123 A
1234567.123 Ao
1234567.123 Aor
1234567.123 AorA
1234567.123 AorA
1234567.123 AorA
Also, if you do not need all letters from A to Z change the range accordingly.
EDIT: Forgot the slash before the dot, mind the changed content.
You can try it here

Related

Regular expression - Get specific part of string [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I have the following sentence:
b.g The big bag of bits was bugged.
How can I exclude the b.g from it by using a regular expression?
I am sure I need a negative lookahead but I cannot get it right yet.
Something like
^(?!b\.g)
I would do it this way:
[^\S].*
What [^\S] does is basically skip any character until it reaches the first space. then start capturing. No need in this case for negative or positing Lookbehind.
Demo: regex101
If you prefer to do it with positive Lookbehind, you can do it this way
(?<=b\.g).*
Demo: regex101
sed 's/^...//' strips the first 3 characters, "b.g", but I doubt that's what you're really asking. Your ^ anchor appears to be a red herring.
You already have correct escaping for . period, just stick with that:
sed 's/b\.g//'
Python's positive lookbehind ?<= may be what you are trying to find words to express:
>>> m = re.search(r'(?<=b\.g)(.*)', 'b.g The big bag of bits was bugged.')
>>> print(m.group(1))
The big bag of bits was bugged.
In python you could do something like this:
import re
w = 'b.g The big bag of bits was bugged.'
print w
d = re.compile(r'^b.g\s')
a = re.sub(d, '', w)
print a

ELO credit card regular expression [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I need a regular expression for the elo credit card which should allow only first 6 digits are mentioned below. The total length will be 16 and all 16 should be numbers only. Alphabets are not allow.
Allowed prefixes:
401178, 401179, 431274, 438935, 451416, 457393, 457631, 457632,
504175, 627780, 636297, 636368, 655000, 655001, 651652, 651653,
651654, 650485, 650486, 650487, 650488, 506699 to 506778 and 509000
to 509999
Use an alternation, with a bit of extra work to cover the two numerical ranges you have.
^(?:401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636368|
655000|655001|651652|651653|651654|650485|650486|650487|650488|506699|5067[0-6][0-9]|
50677[0-8]|509\d{3})\d{10}$
Here is how we handle the two ranges:
506699 to 506778
506699| matches 506699
5067[0-6][0-9]| matches 506700 through and including 506769
50677[0-8] matches 506770 through and including 506778
509000 to 509999
509\d{3} matches 509000 through and including 509999
i.e. 509 followed by any 3 digits
Demo here:
Regex101
You can try this:
^(?:40117[8-9]|431274|438935|451416|457393|45763[1-2]|504175
|627780|636297|636368|65500[0-1]|65165[2-4]|65048[5-8]|506699
|5067[0-6]\d|50677[0-8]|509\d{3})\d{10}$
Demo
Simple Explanation
^ Start of the line
( start of group
?: will not store it in the group
40117[8-9] means 40117 followed by anything between 8 to 9 ( same
applies for similars)
| means OR
5067[0-6]\d means 5067 + a digit between 0 to 6 + a single digit
(any)
\d{10} means it will see if the next 10 characters are digits (after previous valid 6 digits)
$ end of the line
Basically, you need alternation with some range operators to shorten the regex.
The most tricky part is to define the range 506699 to 506778, which can be represented as 506699|5067[06]\d|50677[0-8].
(?x)^(?:
40117[89]|431274|438935|451416|457393|457631|457632|504175
|627780|636297|636368|65500[01]|65165[234]|65048[5-8]
|506699|5067[06]\d|50677[0-8]
|509\d{3}
)\d{10}$
Demo: https://regex101.com/r/BbnHeQ/2
NB: the (?x) is used to allow for whitespace characters in the regex, which simplifies reading for log expressions.

Regex pattern for specific format [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I'm not really good at regex or I can say that I'm a totally beginner to it. I want to know the regex from the following format:
LB-[0-999] - "LB-" with 0 - 999 digits and no spaces at the beginning, middle, and end.
XX-[0-19999] - Only two Capitalize letters in any combination with "-" and 0-19999 digits and no spaces at the beginning, middle and end.
XXX-[0-19999] - Only three Capitalize letters in any combination with "-" and 0-19999 digits and no spaces at the beginning, middle and end.
I want to get all three patterns but I'm really new to regex. I was planning to use it as html5 input validation and I'm really out of time of studying it.
This is what I tried so far:
^LB-[0-9]$
/LB\-[0-9]{1,3}/
/[A-Z]{2}\-1?[0-9]{1,4}/
/[A-Z]{3}\-1?[0-9]{1,4}/
With [0-9] you make appear only numbers in this set: 0 until 9 and with [A-Z] only capital letter from alphabeta. In {1,3} and {1,4} you make obligated to have at least one letter/number and at most four or three. With ?1 you make optional the present of a number 1 before your number, that will be present only for 10000 number or greater. This are three different er for each one of your possible entries.
Consider the changes prosed by user in his last comment the code will be like this:
/LB\-(00[1-9] | [1-9][0-9] | [1-9][0-9]{2})/
/[A-Z]{2}\-(0000[1-9] | 000[1-9][0-9] | 00[1-9][0-9]{2} | 0[1-9][0-9]{3} | 1[0-9][0-9]{3})/
/[A-Z]{3}\-(0000[1-9] | 000[1-9][0-9] | 00[1-9][0-9]{2} | 0[1-9][0-9]{3} | 1[0-9][0-9]{3})/

Regex match word between second last forward slashes and number at end [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I need som help with a Regex match to find two groups. The first should match the word between the second last "/" and the last "/" in a url. The second match should find the number at the end of an url either before "-" or the last "/"
Example:
1. Test 1
2. Test 2
3. Test 3
where 1 match group 1 == test1 and group 2 == 34
where 2 match group 1 == test2 and group 2 == 456
where 3 match group 1 == test3 and group 2 == 2345
Hope it is understandable
Thanks you
Edit
The question was not for finding the complete solution, but more for getting hints about find the specific groups I want to find - but ofcourse im glad that Jerry could give me a solution.
Im sorry i didn't post the worked I have already tried, so here it is:
I am using gskinner RegExr for testing and can now give you an example on this site instead http://regex101.com/r/zB3oZ6
this where what I first tried
href="(.*?)(\d*).html\"
That works fine by finding the number - but when I want to get the text then it all collapse. I will try looking at this in the future: http://www.regular-expressions.info/tutorial.html
You could use something like that maybe...
href=".*?/([^/]*)/[^/]*?([0-9]+)[^0-9]+"
regex101 demo
Following regex should work:
([^/]*)\/(?=[^/>]*>).*?([^.-]+)\.
Live Demo: http://www.rubular.com/r/jWD8VwkDWy
This one works : .*/(.*)/.*-?([0-9]+).*
You can use it in shell :
echo "Test 1" | sed -r "s;.*/(.*)/.*-?([0-9]+).*;\1 \2;"
cf demo

I need a regular expression to match dates with the format of Month DD, YYYY [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
So I ran into a need for regular expressions to match the American format of Month DD, YYYY in order to remove parentheses from the dates on a site I'm working on. I hadn't seen much useful information while googling, so I thought I'd post both the question, as well as the solution I came up with here.
Format started as such:
(January 1, 2013)
And needed to be:
January 1, 2013
ADDING to question text: The original solution I came up with:
\(([A-Z]{1}[a-z]+)\W+([0-9]{2})\W+([0-9]{4})\)
and the chosen answer, which I liked more than my own:
\(([A-Z][a-z]+\s+\d{1,2},\s+\d{4})\)
\\(([A-Z]{1}[a-z]+)\W+([0-9]{2})\W+([0-9]{4})\\)
To break it down:
\\\( -escapes the opening parentheses
( -starts the point in which I'm "saving" the Month to use in the replace
[A-Z]{1} -Matches a single capital letter (since months are pro-nouns and all)
[a-z]+ -this is to match the rest of the word
) -ends the point in which I'm "saving" the Month to use in the replace
\W+ -using this to target the empty space between the name of the Month and the following numbers
([0-9]{2}) -matches and "saves" any 2 digit number, this would by my DD
\W+ -match space between DD, and YYYY
([0-9]{4}) -matches my year, YYYY
\\) -escapes closing parentheses
Try this:
\(([A-Z][a-z]+\s+\d{1,2},\s+\d{4})\)
use group 1 to get the value without parentheses.
See on rubular.
\((\w+ [0-9]{1,2}, [0-9]{2,4})\)
If PHP:
preg_replace('#\((\w+ [0-9]{1,2}, [0-9]{2,4})\)#','$1',$dateStr);