0

我正在为电子邮件主题使用正则表达式,但我希望允许用户在主题中的任何位置添加英镑符号 (£),而几乎没有什么乐趣。

我现在的表达是:

var subjectText = new RegExp(/^([a-zA-Z0-9\.\-\'\£](\s)?)+$/);

在我调用的用于验证内容的函数中,有以下 IF 语句:

if (!subjectText) {
    alertMessage = alertMessage + 'You must enter a valid Subject\n';
}

无论我在“主题”文本字段中输入什么内容(只要其中有一个 £),在提交表单后,我都会收到“您必须输入有效的主题”消息。

有人可以帮忙吗?

4

2 回答 2

2

这就是您使用正则表达式验证主题的方式:(我只是在这里验证主题)

var alertMessage = "All's good.";
var subjectText = "Send me some £ pounds.";

var subjectRegex = new RegExp(/^([a-zA-Z0-9\.\-\'\£](\s)?)+$/);

console.log(subjectRegex.test(subjectText)); // true   

if (!subjectRegex.test(subjectText)) {
 alertMessage = 'You must enter a valid Subject\n';
}

alert(alertMessage); // All's good.

但是,您可以通过删除字符类中不必要的转义来简化您的正则表达式[]

/^([\w.'£-]\s?)+$/

其中\w相当于[a-zA-Z0-9_]; 和., ',£不需要转义,并且-当出现在开头或结尾(即不是范围的一部分)时相同。

于 2013-10-22T15:16:10.853 回答
0

使用以下表达式将有所帮助:

/^([a-zA-Z0-9£\.\-\'](\s)?)+$/

如评论中所述。£是正则表达式的正常字符,不需要转义。

建议修改您的IF条件如下:

 var subjectRegEx = new RegExp(/^([a-zA-Z0-9£\.\-\'](\s)?)+$/);
 if (!subjectText.match(subjectRegEx)) {
    alertMessage = alertMessage + 'You must enter a valid Subject\n';
 }

假设 subjectText包含在主题字段中输入的值。

于 2013-10-22T14:56:13.483 回答