普通字符和重音字符的正则表达式,仅在字符串内包含空格和破折号
Regex for plain and accentuated chars, with spaces and dashes only inside the string
我正在尝试想出一个在 JSON 模式中使用的正则表达式。
约束条件:
- 从 0 到 100 个字符的字符串
- 接受字母、重音字母(没有希腊字符,但也包括 œ)
- 接受 space、' 和 - 仅在字符串内
我有一个蛮力方法:
"^((?![Ð×Þß÷þø])[a-zA-ZÀ-ÿŒœ]{1})((?![Ð×Þß÷þø])[-'a-zA-ZÀ-ÿŒœ ]{0,98})((?![Ð×Þß÷þø])[a-zA-ZÀ-ÿŒœ]{1})$"
这有效..几乎:角色选择符合我的要求。但它不会接受 2 个字符以下的字符串。
那么,不是创建三个组,有没有办法在组的开头和结尾拒绝 space、- 和 '?
奖金问题:写这篇文章我意识到连续的 spaces 或破折号也是不可取的......
你可以用消极的环视来做到这一点,即在它前面向前看,在它之后向后看。而且我们还排除了所有不需要的字符组:
^((?!.*[Ð×Þß÷þø])(?![ '-])[-'a-zA-ZÀ-ÿŒœ ]{0,100})(?<![ '-])$
我正在尝试想出一个在 JSON 模式中使用的正则表达式。 约束条件:
- 从 0 到 100 个字符的字符串
- 接受字母、重音字母(没有希腊字符,但也包括 œ)
- 接受 space、' 和 - 仅在字符串内
我有一个蛮力方法:
"^((?![Ð×Þß÷þø])[a-zA-ZÀ-ÿŒœ]{1})((?![Ð×Þß÷þø])[-'a-zA-ZÀ-ÿŒœ ]{0,98})((?![Ð×Þß÷þø])[a-zA-ZÀ-ÿŒœ]{1})$"
这有效..几乎:角色选择符合我的要求。但它不会接受 2 个字符以下的字符串。 那么,不是创建三个组,有没有办法在组的开头和结尾拒绝 space、- 和 '?
奖金问题:写这篇文章我意识到连续的 spaces 或破折号也是不可取的......
你可以用消极的环视来做到这一点,即在它前面向前看,在它之后向后看。而且我们还排除了所有不需要的字符组:
^((?!.*[Ð×Þß÷þø])(?![ '-])[-'a-zA-ZÀ-ÿŒœ ]{0,100})(?<![ '-])$