[英]Regex for diacritics
I'm looking to implement the solution provided in this answer but it's not working.我正在寻求实施此答案中提供的解决方案,但它不起作用。 The code in this jsFiddle have looks like this:
此jsFiddle中的代码如下所示:
function Start() {
$('#TheBox').keyup(function () {
var TheInput = $('#TheBox').val();
var TheCleanInput = TheInput.replace(/([.\p{L}])/g, '');
$('#TheBox').val(TheCleanInput);
});
}
$(Start);
Basically, I'm looking to allow letters such as é è ô as well as numbers.基本上,我希望允许 é è ô 等字母以及数字。 What do I need to change to make the regex filter work?
我需要更改什么才能使正则表达式过滤器正常工作?
As Casimir et Hippolyte stated in comments, Javascript does not support \\p{L}
unicode character class.正如 Casimir et Hippolyte 在评论中所说,Javascript 不支持
\\p{L}
unicode 字符类。
You can create your own character class:您可以创建自己的字符类:
[a-zA-Z0-9À-ž]
If you want to allow those characters but replace characters outside those ranges, negate the character classes:如果要允许这些字符但替换这些范围之外的字符,请否定字符类:
[^a-zA-Z0-9À-ž]
Or as pointed out in comments:或者正如评论中指出的那样:
[A-zÀ-ÖØ-öø-įĴ-őŔ-žǍ-ǰǴ-ǵǸ-țȞ-ȟȤ-ȳɃɆ-ɏḀ-ẞƀ-ƓƗ-ƚƝ-ơƤ-ƥƫ-ưƲ-ƶẠ-ỿ]
If someone looking for only polish diacritics: [A-Za-zĄ-ćĘęÓóŁ-ńŚśŹ-ż]
.如果有人只寻找波兰语变音符号:
[A-Za-zĄ-ćĘęÓóŁ-ńŚśŹ-ż]
。
When using Java you can use a java regex for this:使用 Java 时,您可以为此使用 java 正则表达式:
import java.util.regex.Pattern;
public class WhitelistValidator {
private static final String ANY_LETTER = "\\p{L}"; // includes diacritics
private static final String NUMERIC = "0-9";
public static final Pattern PATTERN = Pattern.compile(String.format("[%s%s]+", ANY_LETTER, NUMERIC));
public boolean isValid(String valueUnderTest) {
return PATTERN.matcher(valueUnderTest).matches();
}
}
See https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html参见https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.