首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >允许对此正则表达式进行分段和正斜杠。

允许对此正则表达式进行分段和正斜杠。
EN

Stack Overflow用户
提问于 2022-08-26 11:09:39
回答 2查看 29关注 0票数 0

我有这个大梁

代码语言:javascript
运行
复制
!preg_match("/^[a-z0-9](?:[a-z0-9'. -]*[a-z0-9])?$/i", stripslashes($post['job_title']))

我希望在这个正则表达式中允许数字括号和斜线。因为某些职称可以是“前端开发人员/设计师”或“招聘人员(HR)”,我如何做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2022-08-26 11:30:13

好的,我成功地为这个做了一个正确的正则表达式,它允许在内部,但不是在开始/结束,也允许括号内和在开始/结束。

代码语言:javascript
运行
复制
!preg_match("/^[a-z0-9\(\)](?:[a-z0-9\/\(\)'. -]*[a-z0-9\(\)])?$/i", stripslashes($post['job_title']))

感谢@anubhava,他的回答给了我一个如何在regex中添加内容的想法

票数 1
EN

Stack Overflow用户

发布于 2022-08-28 00:07:48

我不认为你的意图是被转换成模式。

代码语言:javascript
运行
复制
/^[a-z0-9](?:[a-z0-9'. -]*[a-z0-9])?$/i

/^[a-z0-9\(\)](?:[a-z0-9\/\(\)'. -]*[a-z0-9\(\)])?$/i

在问题中的模式和答案中的模式中,第三部分(最后的可选字符匹配)没有提供有效的验证。您可以看到模式中间的多字符(零或多个)匹配包含最后一个字符类中的所有字符。换句话说,在没有最后一个可选检查的情况下,您的模式将完全相同。这些都是合适的替代品:

代码语言:javascript
运行
复制
/^[a-z0-9](?:[a-z0-9'. -]*$/i

~^[a-z0-9()](?:[a-z0-9/()'. -]*$~i

如果您的意思是要求字符串以字母数字或括号字符结尾,那么在?之前删除$

尽管如此,如果你想确保:

句号、空格和点只出现在字符串的中间和string

  • etc.

  • 中--所有括号都是正确打开和关闭的,在它们之间包含字符,并且不发生在

  • 的开头。

那么最好的策略将是“测试驱动的开发”。创建一个大型的、多样化的字符串示例,以及您知道应该失败的不现实字符串。然后对所有字符串运行当前模式。然后分析哪些案例没有按预期进行评估,并调整您的模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73500105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档