regex 允许在HTML输入字段中使用撇号

6tdlim6h  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(98)

我有一个php code,如下所示,它验证用户在html表单中输入的Line A的答案。
当用户在html输入字段表单中输入任何带有撇号的答案时,我得到错误消息Secret Answer is Invalid。举例来说:在输入Hello World'时,我从行Z收到错误消息Secret Answer is Invalid

//response
$response_error = new error();
$response_error->field = SECRET_response;
if($response != "" && $service->validAnswer($answer) != 'true'){   // Line A
    $response_error->inError = true;
    $response_error->errorMessage = SECRET_response.ISINVALID; // Line Z
} else {
    $response_error->inError = false;
}

字符串
属于上面Line A中使用的validAnswer方法的Java code/method是:

public static boolean validAnswer(String answer) {
    Pattern a = Pattern.compile("^(?=.*\\S)[a-zA-Z0-9éèàêâçîëïÇÉÔÂÊÎÔÛËÏÀùÙ!#%&$%*\\- ]+$"); // Line B
    Matcher b = a.matcher(answer);

    logger.info("validAnswer: mmatches(): " + (b.matches()) + " a: " + a);

    return b.matches();
}

问题陈述:

我想知道我需要在上面的java code中做什么修改,以便在html输入表单中使用撇号。

这是我在Java代码中尝试的:

我把它放在[ ]的末尾。试了一下,似乎不起作用。

public static boolean validAnswer(String answer) {
    Pattern a = Pattern.compile("^(?=.*\\S)[a-zA-Z0-9éèàêâçîëïÇÉÔÂÊÎÔÛËÏÀùÙ!#%&$%*\\-' ]+$"); // Line A
    Matcher b = a.matcher(answer);

    logger.info("validAnswer: mmatches(): " + (b.matches()) + " a: " + a);

    return b.matches();
}

6mw9ycah

6mw9ycah1#

从PHP调用Java只是为了使用正则表达式是非常奇怪和低效的。PHP当然支持正则表达式,所以你不需要Java。
无论如何,你的最新代码工作得很好:

import java.util.regex.*;

public class Test
{
    public static boolean validAnswer(String answer)
    {
        Pattern a = Pattern.compile("^(?=.*\\S)[a-zA-Z0-9éèàêâçîëïÇÉÔÂÊÎÔÛËÏÀùÙ!#%&$%*\\-' ]+$");
        Matcher b = a.matcher(answer);
        return b.matches();
    }

    public static void main(String args[])
    {
        System.out.println(validAnswer("Hello World'"));
    }
}

字符串
输出量:

true


所以我猜你在修改代码后没有重新编译它。

相关问题