像这样的东西?
^(?:[a-zA-Z0-9&.')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]+|"[a-zA-Z0-9éèêëËÉÈÊàâÀÂîïÎÏçÇôÔûÛùÙ&`.')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]+")+$
这将匹配任何第一组字符(基本拉丁字母、数字各种符号)或括在引号中的第二组字符(法语字母等)序列。IgnoreCase
您可以使用 case选项稍微简化一下:
^(?:[a-z0-9&.')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]+|"[a-z0-9éèêëàâîïçôûù&`.')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]+")+$
你可以在这里测试它。
更新看起来你想要一个匹配部分输入的表达式,例如hello "é
应该被接受。一般来说,这很难做到,我通常建议使用两种模式——一种用于验证完整输入,另一种用于验证部分输入。
为了支持部分输入,我会使用这个:
^(?:[a-z0-9&.')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]*|"[a-z0-9éèêëàâîïçôûù&`.')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]*(?:"|$))+$
"
请注意,我用 a替换了尾随"|$
,因此引用的文本可以关闭,也可以在字符串末尾终止。但是,如果您想确保引用的文本在输入完文本后关闭,您仍然必须使用完整模式。