我正在使用此正则表达式:preg_match('~[^A-Za-z0-9\+\-"]~', $incoming);
我怎样才能在这里添加空格?
一个例子:
word1 word2
我指的是word1和word2之间的空格。我想只允许一个空间。与word1 word2
不同(这些词之间有两个空格)。
但是word1 word2 word3
应该被允许。
这可能吗?
这是我目前的职能:
$incoming = '"test test test"';
$forbidden_chars = preg_match('~[^A-Za-z0-9\+\-"\s]~', $incoming);
if( /*$string_length < 150 &&*/ !$forbidden_chars){
$valid_query = TRUE;
}
else{
$valid_query = FALSE;
}
$valid_query
应该是真的,但它仍然是假的。
为什么呢?
所有例子:
"test"
test
+test
-test
test test
"test test"
将被允许,这也是test test test
这不可能: test test
(两个词之间有两个空格)
答案 0 :(得分:2)
如果您尝试匹配以下内容:
试试这个:
^ ?(\w+ ?)+$
编辑1:
根据我从你的例子中得出的结论,这是你需要的:
^ ?(?:[\w"+-]+ ?)+$
这将匹配单个空格分隔的1个或多个“单词”。这允许可选的前导和尾随单个空格。
答案 1 :(得分:1)
尝试以下
preg_match('~[^A-Za-z0-9\+\s\-"]~', $incoming);
答案 2 :(得分:0)
只需在方括号内放一个空格。
答案 3 :(得分:0)
你应该简单地在你的方法中处理这个(删除重复的空间)无论输入是什么,只需在处理之前准备输入如下
$incoming= ereg_replace(' +', ' ', $incoming);