无法正则表达某种模式

时间:2016-05-17 05:00:39

标签: php regex

我正在尝试编写具有以下要求的正则表达式:
(1)不允许#
(2)不允许&
(3)不允许\ t(标签)
(3)不允许多个空格(单个空格可以)

我试过这个:

<field name="title" position="replace">
</field>
<span attrs="{'invisible': [('title', '=', '')]}" position="replace">
</span>
<field name="contact_name" position="before">
     <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline" options='{"no_open": True}'/>
     <span attrs="{'invisible': ['|',('title', '=', ''),('title', '=', False)]}">, </span>
</field>

但是,我无法按我的意愿获得输出。我究竟做错了什么?
有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

这将适用于许多正则表达式(包括PCRE和JavaScript):

^(?!.*  )[^#&\t]*$

首先,执行否定预测以确保没有任何双重空格,然后匹配零个或多个不是#&或{{1}的字符}。

Regex101 Tested

答案 1 :(得分:0)

将任务分解为 允许的字符的基本表达式,以及为“无双空格”断言启动的负面预测:

^(?!.*  )[^#&\t]*$