正则表达式在开始时删除空格
问题描述:
简单的问题,但我很头疼解决这个游戏。示例正则表达式。正则表达式在开始时删除空格
[a-zA-Z0-9\s]
[whitespace]Stack[whitespace]Overflow - not allow
Stack[whitespace]Overflow - allow
Stack[whitespace]Overflow[whitespace] - not allow
让我知道
更新regex from JG,它的工作。
function regex($str)
{
$check = preg_replace('/^[a-zA-Z0-9][a-zA-Z0-9\s]+[a-zA-Z0-9]$|^[a-zA-Z0-9]*$/', "", $str);
if (empty($check)) {
return true;
} else {
return false;
}
}
$str = 'Stack Overflow ';
$validator = regex($str);
if ($validator) {
echo "OK » " .$str;
} else {
echo "ERROR » " . $str;
}
答
从我的理解,你想有一个正则表达式不允许你的字符串有之初无论是空白,或在年底。沿着这些线路的东西应该工作:
/^[a-zA-Z0-9][a-zA-Z0-9\s]+[a-zA-Z0-9]$|^[a-zA-Z0-9]*$/
一个例子在Python:
import re
test = ["Stack Overflow",
"Stack&!Overflow",
" Stack Overflow",
"Stack Overflow ",
"x",
"",
" "]
regex = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9\s]+[a-zA-Z0-9]$|^[a-zA-Z0-9]*$')
for s in test:
print "'"+s+"'", "=>", "match" if regex.match(s) != None else "non-match"
输出:
'Stack Overflow' => match
'Stack&!Overflow' => non-match
' Stack Overflow' => non-match
'Stack Overflow ' => non-match
'x' => match
'' => match
' ' => non-match
答
尝试:
/^\S.*\S$|^\S$/
如果你只想要字母和数字和下划线,以及tw O字,不会少,没有更多:
/^\w+\s+\w+$/
对于无下划线,
/^\p{Alnum}+\s+\p{Alnum}+$/
然而,在一些正则表达式的风格(尤其是PHP,我现在看到的是目标),您可以使用此:
/^[[:alnum:]]+\s+[[:alnum:]]+$/
如果任何数量的这样的文字和数字可以接受:
/^\w[\w\s]*\w$|^\w$/
答
if ($string =~ /^\S.*\S$/){
print "allowed\n";
} else {
print "not allowed\n";
}
答
为什么要在这个地方使用正则表达式?
装饰(默认)删除:
* " " (ASCII 32 (0x20)), an ordinary space.
* "\t" (ASCII 9 (0x09)), a tab.
* "\n" (ASCII 10 (0x0A)), a new line (line feed).
* "\r" (ASCII 13 (0x0D)), a carriage return.
* "\0" (ASCII 0 (0x00)), the NUL-byte.
* "\x0B" (ASCII 11 (0x0B)), a vertical tab.
因此,所有你需要的是:
function no_whitespace($string)
{
return trim($string) === $string;
}
,就是这样!
$tests = array
(
' Stack Overflow',
'Stack Overflow',
'Stack Overflow '
);
foreach ($tests as $test)
{
echo $test."\t:\t".(no_whitespace($test) ? 'allowed' : 'not allowed').PHP_EOL;
}
http://codepad.org/fYNfob6y;)中的线而invald
+0
因为他也想测试一下字符串是否包含无效字符,比如%!!要么 &。你的解决方案允许他 – 2009-08-21 16:04:03
,它将匹配线为有效的部分。我认为对于这个没有明确使用^和$字符的东西是行不通的。 – Victor 2009-08-20 23:34:29
这是线条和线条结束的开始,而不是你如何使用它。 – Victor 2009-08-20 23:35:04
我在编辑帖子以包含那些.. – 2009-08-20 23:35:35