在正则表达式中匹配非英文字符的最简单方法是什么?我想在输入字符串中单独匹配所有单词,但语言可能不是英语,所以我需要匹配ü,ö,ß和ñ等内容.此外,这是在Javascript/jQuery中,因此任何解决方案都需要应用于此.
我想使用JavaScript从字符串中删除除空格之外的所有特殊字符.
例如,
abc's test#s
应输出为
abcs tests.
我的页面上有表单,用户可以在其中键入一些文本并提交.然后将文本发送到服务器(node.js上的REST API)并保存到DB(postgres).
问题是偶尔会将一些奇怪的字符(控制字符)保存到DB中 - 例如转义控制字符(^ [)或退格控制字符(^ H).通常它不会破坏任何东西,因为这些字符是不可见的,所以html正确呈现.但是,当我为RSS阅读器提供xml内容时,它们(阅读器)会因为这些控制字符而返回"格式错误的XML"(删除后它们会起作用).
我的问题是我如何从客户端级别(javascript)或服务器级别(javascript/node.js)的字符串中删除这些字符?
我有以下要求,只允许大写字母,并以JavaScript形式.我不确定如何检查特殊字符和脚本标记.我写了以下代码.我不想允许$,%等字符.
var upperCase= new RegExp('[A-Z]');
var lowerCase= new RegExp('^[a-z]');
var numbers = new RegExp('^[0-9]');
if($(this).val().match(upperCase) && $(this).val().match(lowerCase) && $(this).val().match(numbers))
{
$("#passwordErrorMsg").html("OK")
}
Run Code Online (Sandbox Code Playgroud) 使用 JavaScript,我想从字符串中删除所有不是数字、字母和空格的字符。所以删除像'%#$&@*这样的字符:
玩家必须*玩!#只是说
会成为:
玩家必须玩只是说
我该怎么做,我不确定正则表达式。
我正在尝试从一段文本中删除特殊字符,但使用以下正则表达式
\n\nvar desired = stringToReplace.replace(/[^\\w\\s]/gi, \'\')\nRun Code Online (Sandbox Code Playgroud)\n\n(在这里找到:\n javascript regexp 删除所有特殊字符)
\n\n具有删除希腊字符的负面影响,这是我不想要的。
\n\n有人还可以解释一下如何在正则表达式中使用字符范围吗?是否有字符映射表可以帮助我定义我想要的范围?
\n\n回答:
\n\n[a-zA-Z0-9\xce\x86\xce\x88-\xcf\x8e\\s] # See my 2nd comment under Joeytje50\'s answer.\nRun Code Online (Sandbox Code Playgroud)\n 我一直在寻找一种方法来使用JavaScript来清理某些表单输入,以防止表单被提交(如果它包含未列入白名单的字符).
我基于一个出色的Stack Overflow 答案提出了这个问题
function allowSubmission(string) {
return string == string.replace(/[^\w\s]/gi, 'X');
}
var s1 = 'simple string';
var s2 = 'alert(0);';
var s3 = '<nasty>string';
console.log(allowSubmission(s1)); //true
console.log(allowSubmission(s2)); //false
console.log(allowSubmission(s3)); //false
Run Code Online (Sandbox Code Playgroud)
但这不仅仅意味着潜在的攻击者可以关闭JavaScript并提交他们喜欢的地狱吗?或者只是简单地编辑JavaScript并覆盖验证方法以返回true.
所以...用JavaScript没有输入消毒没有意义吗?
我正在尝试£$€,.从jQuery/Javascript中的字符串中删除给定字符集的所有实例.我正在使用替换功能,但这只会删除角色的单个实例,而不是全部.
例如,考虑字符串:
1,500,00.00.$djdjd£10€10
Run Code Online (Sandbox Code Playgroud)
我回来了:
1500,0000.djdjd1010
Run Code Online (Sandbox Code Playgroud)
如您所见,它只删除每个字符的单个实例.£, $并且€很好,因为字符串中只有一个.
这是我到目前为止:
function validatePriceRange(value, min, max) {
var replacements = ["£", "$", "€", ",", "."];
$.each(replacements, function (index, item) {
value = value.replace(item, "");
});
var value = parseInt(value, 10);
return value >= min && value <= max;
}
Run Code Online (Sandbox Code Playgroud)
谁能发现我做错了什么?