Here I am having one preg
[-0-9a-zA-Z \/_:.,;=\'{0,2}"{0,2}\s] $
With this I want to check lines whether they contains Alphabets, Numeric and some special character such as - _ , . ; ' " / =. I am getting everything proper but here the issue I faced is with ' & ". Here I want to use this like if quotes are open then it should be closed as well or incase it should not be in use. Either 0 or only 2 times it can be used not more than that.
Example
"hello; max This should not be allowed
"hello; max" This could be allowed if there is no any quotes then also it should allow.
'hello; max' This should be allowed
hello; max This should be allowed
CodePudding user response:
You can use
^(["']?)[-0-9a-zA-Z\/_:.,;= ] \1$
In PHP:
preg_match('~^(["\']?)[-0-9a-zA-Z/_:.,;= ] \1$~', $text)
Or, since [A-Za-z0-9_] = \w,
preg_match('~^(["\']?)[-\w/:.,;= ] \1$~', $text)
See the regex demo.
Replace the literal space with \s if you need to handle any whitespace.
Details:
^- start of string(["']?)- Group 1: an optional'or"[-0-9a-zA-Z\/_:.,;= ]- one or more ASCII letters, digits,/,:,.,,,;,=or space\1- match and consume the same char as in Group 1 at the current location$- end of string.
