用于 Firebase 云消息传递的正则表达式

Regex Expression for Firebase Cloud Messaging

我正在尝试检查用户输入的字符串是否用作使用 Firebase 云消息传递发送通知的主题名称。

据我了解,主题名称中唯一允许使用的字符是:

主题名称包含非法字符时云消息的错误消息是

Notification sent failed: { Error: Topic provided to sendToTopic() must be a string which matches the format "/topics/[a-zA-Z0-9-_.~%]+".

所以我尝试在我的 JavaScript 代码中检查这一点,以防止用户输入非法字符。我对检查正则表达式的理解显然是错误的,因为测试一直在验证无效字符是否有效。

我使用的代码如下:

let sample = "Test Topic Name 20/20"
let trimmedSample = sample.split(' ').join('');
console.log("trimmedSample = " + trimmedSample);

validateString(trimmedSample);

function validateString(inputtxt) {
  var letters = /[0-9a-zA-Z]+/;
  if (letters.test(inputtxt)) {
    console.log("name is Valid");
  } else {
    console.log("name is Invalid");
  }
}

即使主题名称包含无效的“/”字符,检查也会将其验证为有效。事实上,我正在努力寻找它说无效的字符。

如果有人能指出我的问题,我将不胜感激?

谢谢

您当前的正则表达式检查字符串包含样本。您要做的是确保它完全匹配:

var letters = /^[0-9a-zA-Z]+$/;

通过使用 ^$,您可以确保正则表达式必须匹配整个字符串才能成功,而不是同时匹配子字符串。